Removed allocations in sentence scenarios

The key to the cache was allocating in the hash code method + for the
tuple.  Used a custom key class which is a struct to work around these
problems.   Related to #1068
Improved sentence end checking

Improved the perf and allocation profile of sentence end checking.
Related to #1068
Fixed the perf issue with ')'

Fixed the start test to not use the end test.  This greatly simplified
the perf and fixed the underlying perf problem here

closes #1068
Fixed a ')' bug

Wasn't recognizing sentences that started past column 0 and followed a
blank line