Added memory pool allocator implementation

This memory pool allocator uses a bitfield to track allocations.
It is restricted to 32 blocks total, but should be fairly efficient.
Allocation and deallocation should be O(1).