Add TESLA_STRUCT_AUTOMATON() macro.

This macro can be used by a struct to express "treat this function as an automaton that describes me".
Don't produce output on failure.

A more complete solution would probably be to buffer TESLA analyser output and only output on success, but now is the time for expediency rather than elegance.
Create (and use) a __tesla_ignore event.

Sometimes, we want to express things like:

TSEQUENCE(
  x->bar = baz,
  foo(x) == y,
  entered(baz)
);

If we are to have a somewhat readable syntax (e.g. foo(x) == y rather than __tesla_return(foo(x), y)), we can't make a lot of guarantees about the types of the arguments to TSEQUENCE(). This is fine for the varargs, but before this commit, that means we can't put 'foo(x) == y' or 'x->bar = baz' as the *first* argument to TSEQUENCE: ISO C demands that we have a "real" first argument for __tesla_sequence(), and that argument must have a type.

By creating a static __tesla_event called '__tesla_ignore', we can make our TSEQUENCE() macro expand to __tesla_sequence(__tesla_ignore, __VA_ARGS__). This lets us use the kind of syntax described above.
Add a macro to express optional TESLA events.

This is basically a qualifier on TESLA events; we could imagine other qualifiers in the future, such as "in the caller context".

We don't parse it yet.
Trivial: change include syntax for tesla.h.
Reproduce Anil's TCP state work in C-like TESLA.

The syntax is uglier than TEAL / SPL, but it can just about be choked down by Clang with -fsyntax-only, which means the TESLA analyser should be able to parse it!

Parsing not included.