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.

this function is named `createFixedWidthBlock` but it returns a `VariableWidthBlock` is that correct?