Ensure allocations do not happen during Polygon.recalc. Fixes #15

- This change also makes 'recalc' not be part of Polygon's API anymore
- The points, angle, and offset properties must not be manually changed - the setters must be used to ensure that the computed properties are updated
- New calcPoints, edges, and normals vector arrays are only allocation on a) construction of the polygon and b) if setPoints is called with an array that is a different length than the current points array