Add `Matchable` trait

The current PR enables the warning for -source 3.1 or source 3.1-migration and later.

This makes cross-compilation between 2.13 and 3.1 difficult, I guess one can always use @unchecked instead, but then it’s worth asking whether we really need this new trait or we could instead warn by default on downcasting (or at least downcasting from Any).

The advantage of Matchable is that it prevents us from passing an opaque type, but this only works when the opaque type is defined as opaque type Foo = X, it doesn’t work if it’s defined as opaque type Foo <: SomeTrait = X, which will be upper-bounded by Matchable meaning that downcasting type tests would still be unsound.

The PR doesn’t mention universal traits: so far we could write trait Foo extends Any, can we now write trait Foo extends Matchable too?