Add support for punctuation prefixes

Also properly escape keyword chars as well as the keyword base. This
allows you to have $ in keyword chars and it will match things like
`$myvar` which mimics the behavior of vim's native ctrl-p.

This also fixes two bugs:

1) findstart would not properly line up with subsequent calls in the
case where the keyword began with punctuation.
2) Some punctuation within keywords would cause the regex not to match
when it should, for example my$keyword. They are now properly escaped.