!str,hco #15945 Make creation of ServerBinding public again

Yes,  a case class must not (cannot) extend another case class. I can't think of reasons not to extend a case class with a regular class beyond those already mentioned (it could also yield "surprising" pattern matching behavior, because the case class pattern will match instances of its subclasses).

```
scala> abstract class A
defined class A

scala> case class C(x: Int)
defined class C

scala> class D(x: Int) extends C(x)
defined class D

scala> new D(1) match { case C(a) => a }
<console>:11: error: constructor cannot be instantiated to expected type;
 found   : C
 required: D
              new D(1) match { case C(a) => a }
                                    ^

scala> (new D(1): C) match { case C(a) => a }
res1: Int = 1
```