builtins: avoid endian.h in favour of compiler builtins

Use the __BYTE_ORDER__ macro which has been available in GCC since 4.6 and is
available in clang as well.