Remove most the magic off js.Dynamic

There are two remaining bits:
* It can extend `scala.Dynamic` because it is is in the `scala.scalajs.js` package. This should be addressed by the fix to #1385
* There is compiler support to handle the `x` field.

The latter is not an issue for a user-defined `Dynamic` trait as long as it's only on 2.11. It is also not an issue for a potential JSON type, because that one would not have `applyDynamic`.