Refactored external interfaces.

Name changes for python conventions. Created a factory for external
interfaces. Started work on an input interface.