Never mind, use unsafe assign-and-delete model.

Because ObjCInstrumentation is only declared in the Callee instrumenter's implementation file, we can't store a pointer to it in an OwningPtr in the Callee instrumenter's header; deleting could have undefined effects.
Add automaton-description-building to new API.

This is very similar to what's in the old Instrumenter.{h,cpp}, but it's more concise and doesn't keep rebuilding types over and over.
Use new API to build assertion descriptions.

Drop some bits of the old API that we no longer use (and therefore cause warnings now).
Trivial: whitespace, unused import.
Actually make TransitionFn agnostic to events.

Move all FunctionEvent-specific code to the bit of InstrContext that creates function instrumentation.
Clarify "call this instrumentation" API.

Creating a call with no containing scope is a silly thing to do and it seems like we always want to insert instrumentation calls before other things. Clarify the API to make a dangerous thing impossible and the thing we usually want easy.
Make indirection chasing optional.

When instrumenting function events, we need to chase indirections like structure fields and pointer dereferences. When instrumenting assertions, we already have the values that we need to pass to tesla_update_state, so provide an option to not chase down these indirections.
Assertion-site instrumentation with new API.

I had to change a couple of tests because the new API:
 - uses internal linkage for assertion instrumentation functions (why pollute the namespace?)
 - produces more informative instrumentation functions, which can necessitate quotes