Rewrite QuestionClass vtable logic

Changes:

* Remove wrapper vtable() function.
* Define vtables with a macro.

Benefits:

* Remove reliance on __cxaguard (Itanium ABI).
* Can refer to vtables statically (without executing code).
* Restricts future design (good, IMO).
* Makes syntax for defining UUID nicer.
Fix missing include
Kill ByteOrder.h

The API was bad and inlining is good enough.
Only suppress -Wmaybe-uninitialized in GCC 4.8.2

The flag doesn't exist in GCC 4.6.3, for example.
Kill 'empty struct' warning

`__extension__ struct` in Clang and GCC in C source allows
the struct to be empty, suppressing the warning.