WIP: Modernize Trie code

Dealing with Tries/Suffix Trees in one of my classes, so I thought I'd take a look at this code. Apart from updating some deprecated methods, I'm taking a stab at making this more "Base-like", by using `push!` instead of `assign`, taking away the `default` in `get`, etc.

Also added a `Trie` constructor that takes a vector of Strings, which is convenient.

One change I made was taking out the type parameter for the `Trie` and having everything the Dict default to `(String=>Trie)`. I think the only other valid key you would want to use is an Int if you made the keys indices rather than characters, but I'm also digging into the real uses of Tries, so I may be wrong here. Would you really want to use something other than Int/String/Char as a key?

The main reason I wanted to default to String is to add `compress()` and `decompress()` to be able to merge single path keys together. 

Anyway, I'd appreciate any other input or ideas on improving or making this otherwise more useful.