smalloc: initial smart memory allocator

Other classes that require external memory should allocate it though
smalloc. This will automatically handle pooling and cleanup. Also by
centralizing how external memory is handled it will be easier to make
performance adjustments.
buffer: use smalloc

Buffer memory allocation has been moved to smalloc. Buffer instantiation
has been moved to C++. There are no more SlowBuffers, and no more
.parent.
WIP buffer replacement

Have started replacing everything that required .parent.

Ripped out HeapProfiler bit, because not all Buffers will have a
Persistent Handle assigned to them.
WIP