add repeat command to make the same action again

The UI object now saves the last executed command (except for
RepeatCommands themselves and Promt- and FlushCommands, since they are
not user invoked, intended actions). The RepeatCommand then applies the
stored command again.
This is comparable to the . in vim, so I would recommend you add this
line to your config ;)

. = repeat
add '. = repeat' to default key bindings
remember and re-interpret command*line* for repeat

... commands. At some point we might want to add a command
history for an undo feature. For this I'd keep a history of
the applied Command objects and in reverse order call its .undo() method.
For this to work we need one Command object for each application.
If however we re-use a Command object using 'repeat' we'd most certainly lose
local information on how to undo the first application..
add hooks [pre|post]_buffer_[open|close|focus]

cf issue # 563
document new hooks
fix: forgot buf parameter for post_buffer_open hook
re-introduce redraw parm to UI.buffer_close

.. which got lost during a previous rebase
allow asynchronous pre/post command hooks

also, with this a pre-command-hook can cancel the further
execution of the command by raising an Exception.

cf. issue #395
fix #575
Merge branch '0.3.4-fix-575'
added foreign submodule
added submodule for urwidtrees lib
updated urwidtrees lib
fix import
add ThreadTree
add tree lib to setup.py
use ThreadTree in thread buffer
fix ThreadTree
complete ThreadTree
clean up threadbuffer