Allow map keys to be numbers
Merge pull request #540 from xzyfer/fix/map-key-as-numbers

Allow map keys to be numbers
Improve map performance by using hash tables
Lazily evaluate and cache expensive hashes
Cache less expensive hashes
Avoid unnecessary dynamic casting