Make fewer assumptions about how this code will be used.

* Don't downcase strings
* Let the user tokenize the string as they see fit
* Use a hasher object rather than monkey-patching String

These changes should make the gem more flexible.  They also change the
API, so bumping major version per Semver

I like rspec, so there's that