Use window.crypto.getRandomValues when available

Issue #56. New versions of Chrome, Firefox, and Safari provide access to
cryptographically random numbers. Change the length of random_string_chars to
be 32 so we don't introduce biases in taking the modulus.

Also make the code just index into the string, instead of doing things with
substr.