Merge struct support branch

update: exclude type and end keywords as field names, fix enum caching, other fixes

More fixes: use resolve_type so that enum is interpreted correctly
Make struct support optional for now
Merge branch 'master' into wip_cpp
Add base class visit function to find base classes as cursor (todo: maybe use name only?). Also test script