Customizing Proximal Point Algorithm for Convex Programming: Applications to Sparse and Low-rank Models