feat: change naming convention between metadata and storage

metadata now stores both blockid and storageid.

The block is now referred in the metadata as blockid (as before)
The block is referred via its storageid in block storage. i.e The block
is stored by the name of storageid

The storage id is generated using a uuid5, which uses a default namespace of
uuid.NAMESPACE_DNS and blockid as the name.
I'm indifferent about this being a free function vs. a function on the base class. I could argue both ways.

I am curious why we're using the DNS namespace here? I looked briefly at the uuid docstrings but I could not glean the rationale for choosing this over say, NAMESPACE_URL.