Remove use of std::string
Remove new/delete use
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.
Fix -pedantic in printf %p

GCC complains (with -pedantic) that the following is
illegal:

    int *x = ...;
    printf("%p", x);

Although x can implicitly be casted to a void pointer
(expeted by %p), the call is technically undefined behaviour
[1].

Work around the warning by casting everything to a void
pointer.

[1] https://code.google.com/p/sparsehash/issues/detail?id=94
Kill 'empty struct' warning

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