SI-7841 require non-negative length and offset in newTermName

Adds two failing tests that trigger the new assertion.
These will be addressed in the subsequent commit.
SI-7841 More robust unspecialization of names

Names like `T1$sp`, which can arise from `AnyRef` specialization,
were leading to negative length Names if they ever passed through
`unspecializedName` or `splitSpecializedName`. This code path was
touched when printing the tree of a certain AnyRef specialized
classes after specialization, such as `AbstractPartialFunction`
(which had such specialization until a few commits ago.)

This commit handles that case correctly, and generally hardens
against unexpected names, which could pop up from third party
classes.
SI-7841 Expand test coverage, documentation.

The documentation for `splitSpecializedName` transposed the
class and method specializations. The things you discover
when you turn examples in documentation in to test cases!