a simple trie data structure useful for prefix searches