A DSL for Elixir GenFSM modules