Keep track of which automata describe structs.

Allow the programmer to declare that "this struct's behaviour is defined by this automaton, within the context of start and end events that I specify here". This is required to support struct automata because we can't just use any automaton that applies to a struct (it could be merely a sub-automaton) and we need a place to specify the entry and exit events for the automaton.
Let warnings be warnings.

We don't allow warnings to stand, but it is nice to allow e.g. unused variables when first writing code and the code that consumes said variables hasn't been written yet!