Signal a type-error if anything besides a symbol is used for a test name.
Replace assert-function with a generic function assert-result.

Specialize on the type of assertion. This better facilitates extensions.
Replace assert-class function with generic function record-failure.

Better facilitates extensions.
Correctly quote name and use valid-test-name in define-test.