Updated Engine Design

* Reconfigured Subsystem class to be ISubsystem Interface
* Each subsystem is now an abstract interface which derives from the
base ISubsystem interface
* Added additional relevant interface methods to each subsystem
interface.