This file is used by Reflang author.
- Hide Reference and Object from each other via enable_if
- Move exception strings to lib, use them instead of dynamic allocation
- Support header-only or header+cpp
- Reduce code duplication between method and function generation
- Remove generator's Exception class, use lib's instead