Changed NFA and NFAState to Builder-esqe pattern

Jarvis, please comment if you have any input.