Mean Curvature Flow and its Generic Singularities