Change ReserveDevice to return unique_ptr. 
Change ReserveDevice to return unique_ptr. 

The returned DeviceRervation will be freed after its lifecycle ends, semantically it should be owned by the caller.
