feat: delete block endpoint

Blocks can now be deleted, if they have no references. A status
code of 204 is then returned.
A Constraint Error is raised by the metadata driver if there
are references, and 412 is returned as status code.

Endpoint:
    DELETE /v1.0/vaults/{vault}/blocks/{blockid}
Shouldn't this simply return a True/False?

Also this shows an inconsistency in the drivers.
- SQLite just returns None or throws an exception.
- Swift returns False on error, or None on success.

We should make this more consistent with a True/False value pair instead of None/False or None/Exception.