Change blocks to not be type specific

This change moves all type specific methods on `Block` and `BlockBuilder` to `Type` leaving blocks to be generic data transports.

Would it make sense to introduce a base class that implemented this? It looks like most (all?) of the fixed width types do exactly the same thing to create a block builder