[vim] Make text objects work with },), and ].

Previously commands like da<object> only worked with the opening side of the
pair, so you could do da{ but not da}.  I only use the closing pairs so it took me a surprisingly long time to figure out codemirror had text objects.  

Adding the padding to the range to make the objects inclusive only worked in one direction, so I had to do some accounting for going in the other direction (where start ends up being > end, or where they're equal but on different lines).  

I also removed some duplication of calls to selectCompanionObject (at the cost
of switching from map lookup to an if-else chain).