Config converters

** Please don't merge, this is still a draft. **

This commit adds a macro "CONFIG_CLASS", the idea is to create a syntax to define a struct which can be converted to and from a config, and where each member's declaration specifies how it is converted to and from a config attribute. It enforces that attributes should correspond to a member variable of the same name with an underscore appended. 

This macro might be useful to ease the creation of classes / structs like team::team_info. This is a good thing because, while configs are convenient to use and easy to extend, they are much bigger and slower than structs, and errors resulting from misnamed identifiers / typos become runtime errors instead of compile time errors.