Add the capability to create tagged pointer and classes in bitmanip

Create utilities to make safe tagged pointer and class references in std.bitmanip.
Replace with this:
"A Tagged pointer uses the bits known to be zero in a normal pointer or class reference to store extra information. For example, a pointer to an integer must be 4-byte aligned, so there are 2 bits that are always known to be zero. We can store a 2-bit integer there."