Implemented Pattern/Command/Template Structure

Added interfaces, added factory and all controllers (no logic inside
yet), MainWindow and the GUI are still directly connected, next step is
to break these connections.