Create DeviceMemoryHandle which fulfills a similar function to ScopedDeviceMemory, with no ties to DeviceMemoryAllocator.
Create DeviceMemoryHandle which fulfills a similar function to ScopedDeviceMemory, with no ties to DeviceMemoryAllocator.

This is a step in breaking circular dependencies between DeviceMemoryAllocator and StreamExecutor.
