JS backend: generate copy and components for data classes
JS backend: tests for data classes
JS backend: Use TranslationUtils#simpleReturnFunction
JS backend: generate hashCode
JS backend: fix float and double hashes
JS backend: make string hash compatible with Rhino
JS backend: internal consistency tests for hashCode

TODO: Rhino doesn't have ArrayBuffer, we'll need to redo *ToIntBits.
JS backend: tiny JVM consistency fix for string hashes
JS backend: hashCode JVM consistency test