SI-7511 Remove indirection of numeric methods

Methods on `Rich<AnyVal>`s like `abs`, `doubleValue`, `floatValue`,
`longValue`, `intValue`, `byteValue`, `shortValue`, `min`, `max`,
`signum` are slow because they go through multiple indirections
including typeclasses and boxing.

For instance, take `1L.abs`:

Instead of just computing and returning the result (like it is done in
`RichInt`), this is what happens:

- `RichLong` inherits `abs` by extending `ScalaNumberProxy[T]`
- `ScalaNumberProxy[T]` has an abstract
  `protected implicit def num: Numeric[T]`
- This method is implemented in `RichLong` and points to
  `scala.math.Numeric.LongIsIntegral`
- The actual method `abs` now calls `num.abs(self)`
SI-7590 TreeSet should fail fast if Ordering is null

While migrating scala.tools.nsc.util.TreeSet to
scala.collection.mutable.TreeSet, I messed up initialization order
and realized that TreeSet accepts null as an Ordering and only fails
much later.

This change makes mutable.TreeSet and immutable.TreeSet fail
immediately.
Merge pull request #2676 from soc/SI-7511

SI-7511 Remove indirection of numeric methods
Merge pull request #2681 from soc/SI-7590

SI-7590 TreeSet should fail fast if Ordering is null