Add example teardown option.

- `example` can take a teardown lambda as a keyword argument. This lambda will
  get called every time an example is used in a test.
- `test` accepts setup keyword argument that specifies the examples to be
  loaded in that test even if they're not referenced in the test body.
More Thread tests.