Improve endian define handling and fix a couple typos

On Android, BIG_ENDIAN is 4321 and LITTLE_ENDIAN is 1234.  It also defines __BIG_ENDIAN and _BIG_ENDIAN.  These are meant to be tested against _BYTE_ORDER, and come from `<sys/endian.h>`.

GCC 4.6 normally uses __BYTE_ORDER__ and __ORDER_LITTLE_ENDIAN__ / __ORDER_BIG_ENDIAN__ however.  They work the same way.

LLVM simply uses __LITTLE_ENDIAN__ as 1, the obvious simple option.

MSVC provides nothing, but _XBOX seems like a reasonable test to make (ignoring the existence of the Xbox One.)

Because of this, I made it use COMMON_LITTLE_ENDIAN and COMMON_BIG_ENDIAN, which should have less conflicts.  They can be defined in e.g. CMake / Qt / etc. in the case that the above detections fail.

This implements the above, and updates native with similar fixes + a quickfix for an iOS build error.  See hrydgard/native#100 which should be merged first.

-[Unknown]