Merge the MetaClass classes into one class.  More refactoring for cleaner, maintainable code.

Separate MetaClasses were useful during initial development so each one
could be developed separately.  There was enough overlap, however, to combine
them into a single class.

Also changed how functions are chained together and executed.  It should be
both faster and more clear now.