Fixes right most issue and Adds Epsilons

Fixes an issue where the right most non-terminal was being
evaluated first. Now it starts from the left most non-terminal
to apply the grammar rules.

Adds epsilon to the grammar. This brought forth a tricky problem
because you can replicate non-terminals forever and never find the
solution, so I had to implement a check to prevent the state from
falling into an infinite loop. If the size of the current state
is more than 10 more the size of the final state, then skip applying
rules.