Abstract some common code around new/delete into an AllocationContext
that can be used to ensure all allocations are using the allocation
service.  Also cleaned up the genesiscontext to support this refactor.
Documentation added.