Made FIRST sets more easily accessible from Grammar

Basically .first is now a function that takes an iterable of symbols
instead of being a dictionary. This will be useful for computing the
closure sets of dotted rules later on.
Added OrderedSet that does exactly what you'd expect