Backport Fix #1252: Missing asInstanceOf's/unbox'es in scalajsenv.js.

Only one was really a danger, i.e., the result of charCodeAt()
in charSequenceCharAt() with an out-of-bounds index. The others,
being calls to methods of primitive data types, are hardly a
problem, because the implementations cannot return wrong results.
(Of course, they could be overwritten by an evil user, so it's
better to check them.)

Backport:
- Add unboxes in String.hashCode manually.
- Fix RuntimeString.charAt (add asInstanceOf)
- Add a test for a String typed as CharSequence

(cherry picked from commit 39708c23ef4355db18ae34533dab45ee1e0b7083)

Conflicts:

	tools/scalajsenv.js
	tools/shared/src/main/scala/scala/scalajs/tools/optimizer/Analyzer.scala