Multiple memory related changes.

1. Turn `Handle` instances into weak references, meaning that their
   existance is tracked by `CountedObject` instances.
2. Add `Memory` utility class which contains memory related utility
   functions.
3. Add custom vector class, and convert everything to use that instead
   of `std::vector`.
Fix bug in garbage collector.

This commit fixes a bug in garbage collector which prevented generations
1 and 2 being collected.
Remove three handle variables from Interpreter class.

It turns out (unsurprisingly) that using handles in `Interpreter` class
was not that good idea afterall, especially with `request` and `response`
variables.
Merge pull request #65 from peelonet/handle-tracking

Multiple memory related changes.