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 two test cases. One of the fixed cases still fails in vader, but
the usage works in vim.
Code simplification: use fewer one-off functions

join_and_escape is a better abstraction, so openers and closers aren't
needed.
Handle cpp include strings

cpp include strings don't have "string" in their name, so they weren't
counted. Add include to the regex so they'll be handled. This may also
let other types of includes slip through, but since those may be strings
as well, that's fine.

I can't think of many includes that use braces, so hopefully this
doesn't break anything.