added HashyLexicon and changed ResourceLexicons to use HashyLexicons

Also added unit tests to test/TestLexicon. I hope this doesn't break anything. HashyLexicon provides faster lookups than PhraseLexicon by using a SuffixTree-esque data structure, but should provide an identical API, with one exception: for the phrase "New York", lexicon.contains("New") returns "true" for PhraseLexicon and "false" for HashyLexicon.