Move Client responsibilities to InputHandler

InputHandler owns it's UserInterface, and is directly stored by the ClientManager.
rename InputHandler to Client
use directly context.client() for getting the kak_client env var value
Fix clang.kak, now that eval -draft does not use the client user interface
Rework client name change
Resurect Client::handle_available_input()
remove print_status from UserInterface, pass status line to draw

Client store the current status line. This way calls to print status
do not force the user interface to display directly.
Do not clear Client::m_mode_trash in handle_key, but in handle_available_input

handle_key can be called from exec_keys while running a hook, and a previous
key in exec_keys could have changed the mode. This would make the mode that
runned the hook deleted when the controls returns to it.

handle_available_input should always be called at top level, so can safely
clear the mode trash.
Add a InputMode::on_replaced virtual method.

Destructors are not a good place to run mode exit hooks, as they
wont be called until the next mode trash clearing, so we now call
this virtual method on the previous mode just before it gets replaced.