Fix blame opening from (un)staged changes diff view (part II)

This fixes a regression in dd3713a7db320b49816676e9423ee031fbac3745 due
to memory corruption. The nullable SHA ID is now completely special
cased.
Fix regression in handling of :<key>

When the multibyte version of struct key_input was introduced it didn't
properly update the prompt's lookup mechanism implementing :<key>. Fix
this by properly copying the character and set the multibytes flag.
Support unicode characters for :<key>

This reorders run_prompt_command() so that unicode character keys are
supported, e.g. `:树`.
Allow prompt toggle commands to both reset display and reload

When changing the vertical split setting the diff stat was not
automatically updated to fit the full length of the view. By introducing
a proper VIEW_RESET_DISPLAY flag and using that when toggling the
vertical-split option the diff view is now automatically reloaded so
that the diff stat has the correct width.