Abstract base classes and dummy classes

Added an ABC class for all components, specifying the minimum required
API for each component. Created dummy classes for each component to make
unit testing easy. Added a basic test script.