add horizontal scrolling functions (fix #362)

Note that horizontal scrolling may interact with
`auto-hscroll-mode`. Thus, Evil ensures that point is kept away at
least `hscroll-margin` columns from the boundary (if
`auto-hscroll-mode` is enabled) in order to inhibit automatic
scrolling. Because of the funny behaviour of `auto-scroll-mode` it is
impossible to place `point` at the very first column in a window (when
scrolled) even if `hscroll-margin` is set to 0.
optionally rebalance windows after creation/deletion (fix #358)

If the user option `evil-auto-balance-windows` is non-nil then Evil's
functions that create new windows or delete existing windows
automatically rebalance the children of the new/deleted window's
parent window. The default value is t to resemble Vim's default
behaviour. Note that Emacs' built in functions do not cause
rebalancing of the windows.