polygon update

* polygon doesn't need to be in clockwise order now, as long as a
line-pair is provided. this hopefully is a half-step between flat 2D
polygons and 3D polygons.
* cone caches start point and end point. some other refactoring. this
class is still WIP.