get csnappy cpu and endian aware on Win32

On VC, csnappy assumed i386 even on 64 bit builds since it doesn't know
VC's CPU name macros. __BIG_ENDIAN, __LITTLE_ENDIAN, and __BYTE_ORDER were
undefined on Mingw and VC. On Mingw which has cpu macros that csnappy
understands, big endian code was being selected on the x64 build causes
corruption. sys/endian.h and endian.h doesn't exist on Mingw,
but a sys/param.h exists that provides the info. VC has no endianness
macros at all, so there is no choice but to define them. Also add a sanity
check to make sure this never happens again on any platform.

The csnappy code tests if __LITTLE_ENDIAN or __BIG_ENDIAN are defined for
conditional code defs but it seems to me like both are always defined, so
this might be an issue in the future that I am not addressing here.
Version bump to v0.31 to fix windows bugs once and for all hopefully