Basic user interface and architecture

First draft. Missing display method and all image manipluation method
implementations.