Implement DFA
Add failure handling for unknown states
Extract stuff out of main.swift, make FARule Hashable
Add set, NFARulebook
Implement NFAs
Replace set.swift with robrix/Set
Update to Set v1.2
Add Set.filter()
Add support for NFA free moves modelled by a nil transition char
Extract new type EventSource to describe characters and free moves
Use set intersection operator
Move finite automata code into fa/