First-order Methods for Geodesically Convex Optimization