First revision with FSM-like behavior

Insufficient testing + removed successor constructor (need to study Pattern covariance implications and re-implement RecursivePattern accordingly)