Making `String::compare()` param order similar to `hash_equals()`.

This is the 1st step in replacing `String::compare()` with the native
`hash_equals()` in the future. It doesn't change behavior but makes
signature and documentation more similar.

- Changing order in which strings for comparison are passed
  to `String::compare()`.

- Also clarifying documentation to indicate which string must be user-supplied
  and which one is known.
Error if params are not string in String::compare; BC Break.
Use native hash_equals if available.