Implement non-pool-blocking volume allocation for FS volumes.
We setup the volume object, then drop the pool lock, and start the
actual storage allocation. Certain pool operations will be blocked
(start, stop, destroy, refresh), but the basic things like volume
listings will still work.
This also allows storage allocation progress reporting: the API user can
watch the volume object in a separate thread, polling it's 'info' for
update to date capacity/allocation reporting.
- Cole