This PR adjusts the method of rendering from function-based (i.e. call the "tree" function to render a tree) to a more object-oriented class based system. This has a couple benefits:
It sets up for the lazy loading change, so the abstract tab classes can render on-the-fly instead of at render time
It makes the tabs significantly more extensible and easy to implement
This PR adjusts the method of rendering from function-based (i.e. call the "tree" function to render a tree) to a more object-oriented class based system. This has a couple benefits: