Redesign gateway class requirements and structure to support DMO superclasses

A single gateway can now be capable of handling multiple DMO types if
their superclass falls under the recognized data type of the gateway