Add the original first

The only change is to the map: I'm using Ctrl-l

Source:
http://stackoverflow.com/a/6080996/79125
Add tests of original functionality

Test with a few types of braces.

All tests pass.
Use solution from reddit that adds quote support

Instead of just braces, it closes quotes. This is trickier because they
are unmatched, so we need to do some magic to guess what's the right
thing.

Breaks some brace tests.

Source:
http://www.reddit.com/r/vim/comments/2lnwqy/map_to_close_current_quote_bracket_or_paren/
Add tests for how it should work

Some tests fail. Not sure what needs to change to make this work.

After closing quotes, it will keep adding quotes and not find the
preceding parens.

For some reason closing include strings fails. Possibly a different kind
of string syntax attribute.
Refactor synIDattr into is_string
Separate matched vs unmatched pairs

Reduce the duplication of the pair characters by separating the two
types into dicts that we can join into text classes.

paren tests still fail and TODO quote tests still fail.
Add support for angle brackets
Make quote completion optional

Add endoscope_handle_quotes to flip back to original (stackoverflow)
implementation. That version handles parens better, but doesn't handle
quotes at all.

When handle_quotes == 0, all parens tests pass.
When handle_quotes == 1, no new tests are broken.
Prevent incorrect detection of strings

We don't want to detect quote completion after we just inserted the
closing quote. Prevent string closing if the previous character is a
quote.

This will prevent closing an empty string, but that seems like an
uninteresting use case.

Fixes one test case.