In XState the context can only be a plain js map. One can not use
cljs objects (map/vector) as context, because xstate doesn't preseve
the context object's prototype, because it uses Object.assign when
updating the
context.
For a CJLS project, xstate may be good enough, but we still need a solution for CLJ projects.
Last but not least, xstate uses strings to represent states
everywhere, but in clj/clsj we tend to use keywords instead.