Avoid using Assertion.prototype.assert in tests.
Fixed typos in test: Not to be THE answer to the Ultimate Question...
to be canonical: Avoid recursing using the assertion itself.
Fixed truncateStack regression introduced in dab87666.
types: Base the 'function' type on 'object'.

This makes it easier to implement things like "to have property" for functions when scoping by type.
Scope most assertions to specific types.
Removed doubled clause.