Review js.Dictionary as a generic class <: js.Object.

The design of js.Dictionary has been left in a very primitive
state since the early versions of Scala.js. This reviews its
status, and makes it 1) generic in its element type, like
js.Array, and 2) a subtype of js.Object.

Fixes #258.
Fix #256: Add js.Object.hasProperty(o, p) as equiv. to `p in o`.
Merge pull request #259 from sjrd/generic-js-dict

Review js.Dictionary as a generic class <: js.Object.
Merge pull request #260 from sjrd/in-keyword

Fix #256: Add js.Object.hasProperty(o, p) as equiv. to `p in o`.
Fix #261: reversi-opt broken.

It was broken in 3f59f11f1a446bd5681e67d69667eaa80a6105d9.
Merge pull request #262 from sjrd/fix-reversi-opt-on-master

Fix #261: reversi-opt broken.