Added clipboard support if running in a window manager

We detect windowing environment by simply trying to load Tk.
If we can't load Tk we provide a dummy clipboard command.

Only implemented paste (^v) for now as proof of concept
Started implementing text selection

Completed the renderer. It messes up syntax highliting slightly but it
works well enough.
Minor reformatting of long lines
Improved drawing of selection to behave better with syntax highlighting
Implemented copy selection

We're using the familiar ^c for this. So ^c no longer exits the
program. Need to implement some other clean exit function in case
the program hangs due to bugs. Maybe ^q^q (double quit)?
Fixed selection rendering on lines with tabs

Previously ignored the difference between tab character on the line
and the actual position of tab  on the screen.
Removed code that exits on ^c

^c clashes with copy selection command.
Implemented block indent and de-indent

Simply pressing the tab key in a selection will block indent
the selection. Shift-tab block de-indents.
Fixed selecting tabs at the beginning of lines
Fixed backward selection bug (when selecting to before start of selection)
Implemented cut (^x)

Finally all the basic clipboard functionality is done - cut, copy and paste.
Implemented undo for cut
Merge branch 'clipboard-support'