C++ multi-purpose reflection library