The virtual fibering theorem for 3-manifolds