Final step in getting GlobalDeviceMemory to own its handle.
- Make GlobalDeviceMemory movable, but no longer copyable.
- Make Device::freeDeviceMemory function private and make GlobalDeviceMemoryBase a friend of Device so GlobalDeviceMemoryBase can free its memory in its destructor.
- Make GlobalDeviceMemory constructor private and make Device a friend so it can construct GlobalDeviceMemory.
- Remove SharedDeviceMemoryBase class because it is never used.
- Remove explicit memory freeing from example code.
This change just consumes any errors generated during device memory freeing.
The real error handling will be added in a future patch.