new experimental support in BlockAllocated<T> so it can be used to wrap a T type transparently, so the CALLER can say the type T is block allocated without the underlying T type using the BlockAllocated macros!; AND - use this in Memory::Optional<T> - so that it now properly respects copy sematnics, and uses the afore-mentioned BlockAllocated<T> by value variant. Still very little tested