refactor UI classes, and split to 3

This split makes the UI testable.
It also makes code readibility a little higher.
remove support for python version older than 2.6
Improve class documentation.
added the file for base UI class

This file is the testable UI functions.
These could be also used for GUI development later ...
add MANIFEST to gitignore