Reorganize unit tests.

- Move check-expansion to its own file so that it can be reused. Provide
  both check-expand-once and check-expand-fully variants.

- Split up the big blog of threading tests into smaller test submodules
  interleaved with the functions they test.

- Use check-expand-fully to check the #%app expansion explicitly and
  more concisely.
Fix bug with check-expand-fully

It was actually acting like check-expand-once.

Also, use syntax classes for slightly better error messages (although I
didn't spend time to make them ideal).

Also, add unit tests covering explicit expansion of ~> as well as the
existing ones covering an implicit require of the correct #%app.