Boilerplate reduction
Move Gadget creation from InputGadgets to Gadgets

The concept is really broader than just InputGadgets.

This is really just a refactor into a new Ecot, separating the notion of
a classname-based factory from that of an InputGadget.