Fixed zero-width detection.
Cleaned up the Rule template a bit.
Implemented left recursion detection as a customization of Tarjan's strongly connected components algorithm.