Faster and cleaner convex hull

The current convex hull algorithm is not very good. I rewrote it to make it faster, cleaner and shorter. The old one was:

* Slow -- calculated 'real' angles using atan2 instead of taking advantage of fast implicit angle comparisons via cross product. This algorithm does not sort by angle at all (sorts by coordinates instead, which is much faster).
* Overly verbose and confusing. This one is cleaner and shorter.
* It also had a bug related to custom accessors.

Please ignore the strange commit logs, I got a bit confused.