Change to allow 1 character root labels, along with some restructuring and new test cases

A few minor changes:
*changed to allow root domains of 1 character (e.g a.ly), which are valid for some TLDs
*added additional test cases
*changed the method for adding rules to the trie from a recursive approach to an iterative approach
*renamed trie.root to trie.rootNode, which seems less confusing (since there is also a root variable referring to the root label in some methods)