Prefer the type-safe version of ConstructTrans.

We actually don't need the other version (which takes a bunch of integers as parameters) at all any more. Simpler, safer code.
Panic close to the source of the error.

It's silly to have tesla_action() return a 'PANIC' value that triggers an indirect panic. If we have to call tesla_panic(), do it as soon as we detect the error, where we have all of the relevant information.
Trivial: improved name.

The name 'copied_in_place' is ambiguous, and I got confused despite having written the code! 'clone' is much clearer.
More test detail.
Add tesla_transition.to_mask.

Sometimes, we need to specify that a transition should ignore certain keys. For instance, the TESLA event:

foo(x,y) == z

may be relevant to transitions that care about (x,y,z) as well as transitions that only care about a subset of these (for example, the "just stay in the same state and ignore that event" transition).

In order to support this, each transition should specify a mask for the name an instance should have after taking the transition.
Add strict() and conditional() predicates.

Strict mode the new default for explicit automaton descriptions and is all that TESLA's assertion language could previously express. In strict mode, any event named in the automaton must fit the usage described by the automaton.

In conditional mode, the new default for inline assertions, any named event can occur at any time as long as the NOW event does not occur. Executions involving the NOW event must "play by the rules", but other code paths are allowed to e.g. call the same functions.

Also plug in tesla_action() to provide the new tesla_update() driver logic.
Put an assertion on the abort() path, too.

After combining two previous versions of this demo, we ended up with an assertion that describes one code path but not another.
Tolerate different orders of .dot statements.

We don't care what order these lines come in, so long as they're all there.
Colour transitions according to equivalence class.

Increase the visual similarity of equivalent transitions to aid in debugging.