Large scale semidefinite programming: simplicity, conditioning, and an efficient algorithm