view: extract code for checking whether to refresh a view
view: never reset the private state when changing between views

Since the view state contains data used by draw, e.g. for reflogs, this
can break certain views. Furthermore, it was leading to memory leaks
because the view ops done() method was not called prior to clearing the
data.
tree: update columns width when commit data has been loaded
view: recalculate widths when options are toggled
view: implement view columns for blame view and use for grepping
view: adjust author width automatically

Fixes #49
view: calculate column width using utf8_width()