Major refactor
Hide complexity from clients (no need to import anything). Resolves issues surrounding import order since clients don't interact with the addon directly, only through objects given to them in hooks.

custom_fields is still broken for now.