New Traits adaptation mechanism!

A substitute for traits.protocols that fixes several issues with it.

The code is also much smaller and well tested.

The changes are backward compatible; the protocols API has been deprecated, and new functions and decorators introduced; see the "Migration guide" in the documentation for details.