"Ported" code back to C++98, C++11 use was just gratuitous in this code, no really
big features (lambda, new STL classes, etc.) were used:
1. nullptr -> just replaced with 0x0
2. few in-class-body initializations -> moved to join the rest in initialization
   list in the constructor, now all initialization is uniform
3. deleted functions -> moved them to private and gave them no body so there is
   either compiler error or (if used in-class or by a friend) linker error
4. one class to std::string::pop_back -> replaced with std::string::erase() called
   on --std::string::end()