Allow byte swapping methods to be used in constant expressions
Allow byte swapping methods to be used in constant expressions

On Linux, the bswap_* methods are non-constexpr wrappers around the
__builtin_bswap* built-ins. Invoke the built-ins directly to allow
fly::endian_swap to be declared constexpr.

On Windows, the _byteswap_* methods are also non-constexpr, but there
aren't any other built-in alternatives. Roll manual byte swapping
methods for now instead. There is a feature request for MSVC to make
these methods constexpr:

https://developercommunity.visualstudio.com/idea/362558/mark-some-built-in-functions-as-constexpr.html

trflynn89/libfly,trflynn89/libfly