THRIFT-2513 clean up enum value assignment
Client: Compiler (General)
Patch: Konrad Grochowski

Fixes the failing test with pure_enums. For details, see JIRA ticket.
libgenerate extracted from thrift executable so compiler specific unit tests can be added
compiler: IndentKeeper extracted from t_generator

* tests added for IndentKeeper
* t_generator movd a little bit towards meeting SRP
* IndentKeeper can be reused by lower level generator
     (like MethodGenerator)
compiler: IndentGuard added

will simplify operating on indents
compiler: ScopeGuard added
compiler: C++ generator refactoring stared - operator<< generation made more OO