Remove redundant directory hierarchies.

When running llvm-lit, it already creates a directory hierarchy for outputs. By specifying ${CMAKE_BINARY_DIR} instead of ${CMAKE_CURRENT_BINARY_DIR} as the output root, we get rid of redundant directories like "${output_dir}/tesla/test/tesla/test".
Field instrumentation: avoid null terminators.

Ensure that we only use struct, field and combined names without NULL terminators. This lets us name instrumentation functions consistently (and less ugly-ily), as well as remove an ugly template argument to std::multimap.
Style: move tag building closer to its use.
Explicitly check for existing instrumentation.

The check implied by Mod.getOrInsertFunction() doesn't seem to work, perhaps because we use private linkage. Check for existing struct field instrumentation explicitly instead.
Struct fields: add some debug output.
Parse struct->field++, struct->field--.

Treat increment and decrement operators on structure fields exactly like e.g. 'struct->field += 1'.

We don't care about pre- vs postfix: we only ever parse this on top-level TESLA expressions, not argument values, so the ordering doesn't matter.
Declare tesla::FindBlock() in a header.

This will be used by structure field instrumentation code.
Trivial: drop unused variable.

Normal compiler warnings didn't catch this, as the variable *is* updated; it just has no effect on the rest of the program.
Define {strict,conditional} outside analyser.

When we're running the regular compiler, we need to #define away the __tesla_strict and __tesla_conditional predicates, just like the other predicates.

Style: re-indent other predicates to accommodate __tesla_conditional(), which is longer than any of them.