Added the SharedBitmappedBlock, as the thread-safe version of the regular BitmappedBlock.

The new $(REF SharedBitmappedBlock, std,experimental,allocator,building_blocks,bitmapped_block) and its single-threaded version can now be instantiated with `Yes.multiblock` or `No.multiblock`.
If instantiated with `Yes.multiblock` (the default behavior), each allocation can return an arbitrary number of blocks.
With `No.multiblock` however, any allocation request can't exceed the block size. This allows for greater performance on both single and multithreaded environments.

---
// The 'BitmappedBlock' is implicitly instantiated with Yes.multiblock
auto a = BitmappedBlock!(blockSize, 8, Mallocator, Yes.multiblock)(numBlocks * blockSize);

// Instantiated with Yes.multiblock, can allocate more than one block at a time
void[] buf = a.allocate(2 * blockSize);
assert(buf.length == 2 * blockSize);
assert(a.deallocate(buf));
---

---
// Instantate the 'BitmappedBlock' with No.multiblock
auto a = BitmappedBlock!(blockSize, 8, Mallocator, No.multiblock)(1024 * blockSize);

// Since instantiated with No.multiblock, can only allocate at most the block size
void[] buf = a.allocate(blockSize + 1);
assert(buf is null);
---

For shared the same rules apply, we only need to replace `BitmappedBlock` with `SharedBitmappedBlock`.
