Complete Issue #122

- Port WeakValueDictionary and Cache
- Add CacheTest to test Cache class