Module float_bug

Tests for a weird bug when writing the float (rational at the time) matcher.

This came down to optional entries being mapped in NFA as empty transitions
from a single node. If multiple choices were from the same node the empty
transition order was incorrect (it's ordered by node number, and the node
for the empty transition was created after other nodes, intead of before).

The fix used was to change the node creation order. Other nodes appear to
be created correctly. However, it would be better in the longer term, I
suspect, to use an ordered dict or similar to store the empty transitions
so that the numbering is not needed for order.