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