Refactored suggestor.

We're not creating the entire tree ahead of time to represent the
grammar, instead, we are traversing the passed path one segment at a
time.

Also added compiled files to .gitignore