First Set

Tests don't work since I changed the list of nonterminals to a set, but the code works.  We still need a way to handle that weird "(ID)" case