Dynamic bugfixes

Fixes for

[SI-4536](https://issues.scala-lang.org/browse/SI-4536) Dynamic is broken. _(a compiler stack overflow)_

[SI-5040](https://issues.scala-lang.org/browse/SI-5040) Behaviour of scala.Dynamic depends on implementation details of superclasses

I've removed the fix for SI-5039 until I've decided whether to change the docs to match the code or viceversa.

I've included tests which failed before each of the fixes and pass now. The full test suite passes. Still, please review carefully: all comments & suggestions welcome.