Add a ByteOrder trait for abstracting over endian conversions

The `Bitwise::swap_bytes` method was also moved into the `ByteOrder` trait. This was because it works on the byte level rather than the bit level.
Use ByteOrder methods instead of free-standing functions
Fix comment formatting
Merge the Bitwise and ByteOrder traits into the Int trait

This reduces the complexity of the trait hierarchy.
Remove `#[stable]` attribute from free-standing endian conversios and mark them as deprecated