It's not currently possible to have more than one machine in a single function
because of label conflicts. Labels should have a unique prefix.

Emit a warning when a subtraction has no effect.

Emit a warning when unnamed priorities are used in longest match machines.
These priorities may unexpectedly interact across longest-match items. Changing
the language such that unwated interaction cannot happen would require naming
longest-match items.

Now that actions are prevented from being duplicated in actions lists, if it
turns out that actions may sometimes need to be duplicated in an action list
then this can be accomodated by adding an "allowdups" options on actions.

If two states have the same EOF actions, they are written out in the finish
routine as separate cases when they can be included in one case.

Testing facilities: Quick easy way to query which strings are accepted.
Enumerate all accepted strings. From Nicholas Maxwell Lester.

Add more examples, add more tests and write more documentation.

A debugger would be nice. Ragel could emit a special debug version that
prompted for debug commands that allowed the user to step through the machine
and get details about where they are in their RL.

Frontend should allow the redefinition of fsm section delimiters.

Do more to obscure ragel's private variables. Just a leading underscore is not
enough. Maybe something more like __ri__.
