snapshot: create a fully-shared snapshot of an online volume

Note we also add the shared blocks to the reserved volume, so if both
the user volumes were written to, we would fork the blocks twice
where only once is strictly necessary. We expect snapshots to be
read/only, so we shouldn't experience this.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>