Operator Splitting for Conic Optimization via Homogeneous Self-Dual Embedding