Implementing `a` selections and other things

This is a pretty big change (almost a rewrite), so no pressure to merge it. Feel free to test it and find edge cases where it doesn't work, in which case I can fix them. (If you use Vundle, you can just use `Plugin 'gibiansky/vim-textobj-haskell'` to do so.)