pool allocator to be used for resources

The allocator allows a lot of customizations:
. free store or memory mapped for persistence
. size of the pool
. reference counting (not implemented yet)
It also offers extra-functions: iterators to visit all the allocated
cells in the pool (note: iterator gets confused if a cell is allocated
but the constructor is not called, because it relies on a non-null id to
identify a valid cell)