Remove QVM_COMPAT, allow both QVM and NaCl ABI at the same time.

* Made GameVM an abstract class implemented by QVMGameVM and NaClGameVM
* The QVM native VMs are now name-qvm-native.so
* NaCl compilation options are visible but off by default

Still TODO:
* Better reporting of errors when creating VMs
* Add a prefix to NaCl native VMs
Remove the last pieces of the LLVM VMs, we have NaCl now
Fix the compilation of native NaCl VMs in C++
RPC: add a major syscall number along the syscall index
Make the QVM compile def more precise by using either QVM_ABI (for the ABI) or Q3_VM (for lcc)
CM: winding_t is now by value instead of by reference

It removes memory allocations in CM however we guess that
winding_t has no more than 15 points and is "cheap" to copy.

This is to be able to allocate a big chunk of memory for a map
and then mmap it in readonly for the VMs
Updated NaCl files
New IPC framework
Use OVERRIDE instead of override to support older compilers
Merge branch 'master' into engine-upgrade/nacl

Conflicts:
	src/engine/server/sv_game.c
Small fix to IPC framework
Consolidate headers:
- Group src/common/*.h in src/common/Common.h
- Include all C and C++ standard library headers in q_shared.h
Merge branch 'master' into engine-upgrade/headers
Merge branch 'master' into engine-upgrade/nacl
Implement std::hash for Str::StringRef
Add framework/Resource and use it for audio/Sample

This is somewhat WIP, there are a few blocking TODOs,
especially the one near the declaration of Manger::Register
Add the S_{Begin/End}Registration syscalls and use them in cgame
Resource: introduce a Handle WIP for c&c
Fix compilation of std::hash<Str::StringRef>
Fix a stupid 'optimization' in std::hash<Str::StringRef>