Add allocators and instance initialization.

Adds class allocators and methods `alloc` and `__call__` for class
`Class` which are used to initialize new instances of the class.
Add initializer and hashing methods.
API: Add Set class.

Adds implementation of hash set and it's initial API.
Add list allocator.
GCC build fixes.
Merge pull request #47 from peelonet/hash-set

Hash set implementation, allocators and initializers.
Modernize examples a bit.
Add more allocators for default classes.

1. Add `kNoAlloc` constant to `Class` which can be used to disable
   allocating new instances of classes.
2. Make sure that each class in our API has some kind of allocator, or
   allocation of instances disabled.
3. Add some random API methods which are just useful/fun.
Merge pull request #48 from peelonet/allocators

Add more allocators for default classes.
Simplify stat caching in Filename class.
Make sure that the response is always committed.
Merge pull request #49 from peelonet/ranges

Make sure that the response is always committed.
Update TODO.md
Add support for ranges.
Merge pull request #50 from peelonet/ranges

Add support for ranges.
This hopefully makes the entry point of the HTTPD a bit clearer.
Merge pull request #51 from peelonet/httpd-param-fix

This hopefully makes the entry point of the HTTPD a bit clearer.
Add new container class: Pair.

Pair is an container which holds two values of same type.
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.
Update TODO.md