Changes for metadata.

- Rewrite lists in terms of pairs.
- Initial implementation of hash-map.
- Refactor string representations.
Add metadata.
Rewrite list length using metadata.
Fix bug with duplicated factors on problem 3.
Move metadata test.
Add docstring.