Updated Algorithms to include thompson's algorithm
Updated types for FSA to meet Matt's requirements. Rewrote Thompson algorithm to use the new data structure.