Conic convex programming and self-dual embedding