Add :cabal Ex command to Vim2

The :cabal command runs `cabal build`, which allows me to run `:cabal` and
then `:reload` from with yi in order to incorporate the latest changes I've
made. Or if `cabal build` fails to press enter on the error message line and
be taken to the source of the error.
:cabal supports passing arguments to cabalBuildE
Remove vim incompatibilities for :buffer command
:bdelete command works again

The Buffer command's :b abbreviation was parsing the :bdelete command and then
not doing anything due to having been given no argument.
Better fix for :b :bdelete contention

Rather than rely on `BufferDelete.parse` appearing before `Buffer.parse`,
let's fix `Buffer.parse` to not parse `bdelete`.

The change is to allow `b` to be immediately followed by digits (representing
a buffer reference), but other characters require a space before them.  Also,
make sure to allow no characters at all to follow the command name, which is
done by parsing `P.eof` and returning the empty string representing the
current buffer.
Improve ex command parsing failure message

If an unknown ex command is entered, include the command in the complaint.
This is not only compatible with Vim, it is very helpful for discovering
errors when writing ex command parsers.
Fix some compiler warnings
Merge pull request #492 from benarmston/vim2-cabal-ex-commands

Add :cabal Ex command to Vim2
Merge pull request #496 from benarmston/vim2-buffer-ex-command-improvements

Vim2 buffer ex command improvements
remove -fhacking, which is useless
remove -fdochack, as the cabal bug has been fixed
Delete Data.ByteRope as it is not used
Fix most hint warnings
Fix hlint warnings that increase laziness
Fix Control.Arrow hlint warnings
Ignore Use camelCase hint warning in Cocoa code
Don't use RWS for only Reader and State

Instead of using RWS r () s we use ReaderT r (State s)
Switch from MonadIO to MonadBase IO