Update block-device representation in state

... and prepare for "datastores" (storage assigned to a unit) in state.

Block devices are now treated as first-class entities, with their own
tags. This is because disks may exist unattached to a machine, and so
it doesn't make sense to tie disks to machines.