Improved Vec2 performance and added a Cache.

[IMPROVED]  Vec2 is now truly immutable, caches a bunch of math and even reuses its own instances.
[ADDED]     Cache - a generic way for objects to easily cache stuff.