make byte order types IO wrappers

Converts the ByteOrder types introduced in #3633 to IO wrappers.

Works quite well, requiring no changes for existing `read`/`write` methods. 

~~However, I seem to be getting some ambiguous dispatch errors that I can't seem to fix,~~