James McAvoy, acteur écossais