Guarantee validity of VolumeInfo via WeakPtr.
Previously, when performing an asynchronous operation, we could end up on doing
the first part and the second part on different volumes if the volume id stayed
the same.
This CL introduces a Volume class which is returned as WeakPtr<Volume>, which
is invalidated when a volume is ejected. So, if a device is ejected and
then another one inserted (with the same volume id), the WeakPtr will be
invalidated, and such earlier mentioned async operation would be able to
abort.
TEST=unit_tests: *VolumeManager*
BUG=None
Review URL: https://codereview.chromium.org/
1036563004
Cr-Commit-Position: refs/heads/master@{#322749}