Add implicit conversions from JS primitives to Rich ops.

* js.String -> StringOps
* js.Number -> RichDouble
* js.Boolean -> RichBoolean

This will allow you to use nice things like
`(x: js.Number).max(...)` or `(s: js.String).map(...)`,
which are "available" on `Double`s, `Boolean`s and `String`s
but not on `js.*` by default because implicits don't stack.