Restructure base classes

(work in progress but please take a look already)

This is the first step in the base class cleanup. We now have material as the abstract base class and mineral and composite derived from it.

next steps:
- remove composite_base
- remove named tuple
Do we still need this file?  Can the helper classes be moved into mineral.py?  Alternatively, we could rename this mineral_helpers.py.  I'm just not wild about the name, as it no longer describes what is in the file.