pruned languages to remove unreachable nonterminals and terminals

Used the nanopass framework's define-pruned-language and diff-languages to determine where languages had unreachable terminals and nonterminals.  The change required a small change in the remove-lambdas pass.  I have tested the result on my laptop and it seems to work okay (136 tests passed and 20 skipped).

Hopefully this will also help to speed things up a bit and reduce memory usage a little more.