Add a ByteOrder trait for abstracting over endian conversions

The free-standing endian conversion functions have been deprecated in favour of a group of conversion functions grouped together in the `Int` trait. These methods have longer, more descriptive names to distinguish them from those defined on the `PartialOrd` trait:

- `mem::from_be*` -> `Int::from_big_endian`
- `mem::from_le*` -> `Int::from_little_endian`
- `mem::to_be*` -> `Int::to_big_endian`
- `mem::to_le*` -> `Int::to_little_endian`

The `Bitwise` trait was also merged with `Int`. This further simplifies the trait hierarchy.

[breaking-change]

`core::num::Bitwise::swap_bytes` was moved to `core::num::Int`

The free-standing endian conversion functions in `core::mem` have had their `#[stable]` attributes removed.
Why change these to statics?