Allows type-safe handling of hashes, so e.g. Sha256 and Sha256d
can't be mixed.
It is designed to force making endianness explicit as much as possible, as
the different protocols used with Bitcoin ABC use varying endianness:
- In the Bitcoin protocol:
- Byte order is little-endian
- Hex representation is big-endian
- In the SLP protocol:
- Byte order is big-endian
- Hex representation is big-endian