Tweak core.serialize

This adds proper support for nested tables and improves performance a bit.
Add strict module

Also fix leaking globals found by it.
Fix wallmounted mesh rotations
Clean up rollback
Fix raillike bug (currently manifests itself on Android), and minor improvement to readability.

NB: Minor edits to patch made by Zeno- (int to short and minor formatting)
Fix leaking global in texture pack menu
Simplify loading of Android version of menu
Mgv5 get ground level at point function. Fast spawn player version
Mgv5 1 up 1 down overgeneration for biome surface continuity
Optimise getTileInfo()

getTileInfo() ~1.5x faster
getSmoothLight ~2.0x faster
Optimise functions from CNodeDefManager and VoxelManipulator

CNodeDefManager::get()
VoxelManipulator::addArea()
serialize.h: use machine native byte swapping if available, fall-back to previous generic method if not (supported for GCC using endian.h, detection done in cmake) write/readARGB8() - just write 32-bit color in one op, instead of 4 1-byte ops cleanup: removed unneeded buffer init for some serialize-out functions use a #define for the fixed point factor in read/writeF1000()

nodemetadata.cpp, nodetimer.cpp
	optimzation: simpler deserialize node position method

staticobject.cpp:
	cleanup: use util/serialize.h inlines instead of its own de/serialization

serialize.cpp:
	minor optimization/cleanup: avoid generation of unneeded string temporary

CMakeLists.txt, cmake_config.h.in: detection of endian.h

config.h: added HAVE_ENDIAN_H

Commits due to feedback squashed

Signed-off-by: Craig Robbins <kde.psych@gmail.com>