First-principles study of vacancy-assisted impurity diffusion in ZnO