Keyword search performance improvements

- Only perform one query to get keyword search hits and snippets
- added user option to generate snippets (false by default)
- Cleaned up the methods I worked with. To see the minimum changes for the single-query implementation, look at the diff from the first commit