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
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>
Update the doc of Resources for Handles
Cleanup adding bot obstacles for buildings.