Rework the parsing algorithm so that it works (mostly)
without using RegEx's. This allows for replacing with an
empty string and escape sequences (\t, \n, \r).
Fixes#71, #93, #117
Commands (from the Ex class) are now called with an object
containing the range, arguments, vim state, ex state and
editor instead of a long list of arguments.
`:tabedit` now works as an alias to `:edit` with a path and
as an alias to `:tabnew` without.
`:tabnew` is a new command that opens a new tab with a new file if used
without a path and works as an alias to `:tabedit` with one.
`:tabclose` now works as a proper alias to `:quit` (i.e. passes the arguments)
`:edit` now works more like before - it opens a given path in a new tab.
It also doesn't do anything if the file was modified since the last commit,
unless forced by using `:edit!`
`:write` works properly again and doesn't overwrite files, unless forced by
using `:write!`
`:xit` is now called `:xit` and not just `:x`
`:substitute` now properly replaces multiple groups (`:s/(a)b(c)/X\1\2X\0`)