Add support for hash maps.

This commit adds hash map objects and inital API for `Map` class. Also
adds two new exception types: `LookupError` and `KeyError` which former
is used in `Map` class.

Largely based on existing hash set implementation. Coding while having a
hangover is terrible and slow.