Add byteswap intrinsics for converting from big/little to host endian

These are similar to the ntoh[s|l] functions in C and have the style of
from_[be|le][16|32|64].
libnative: Use [from|to]_be16 instead of bswap16
libextra: Use from_be32 instead of bswap32 in vuint_at()

Also use the fast version of vuint_at() on all architectures since it now
works on both big and little endian architectures.
auto merge of #11265 : c-a/rust/byteswap_from, r=alexcrichton

This patchset adds intrinsics similar to the to_[be|le][16|32|64] intrinsics but for going in the reverse direction, e.g. from big/little endian to host endian. Implementation wise they do exactly the same as the corresponding to_* functions but I think it anyway make sense to have them since using the to_* functions in the reverse direction is not entirely intuitive.

The first patch adds the intrinsics and the two following changes instances of bswap* to use the [to|from]_* intrinsics instead.