Flesh out Node a bit more
Introduce Allocator interfaces and a std::malloc wrapper