Improve Character Mapping and use pseudoRandomBytes

* Directly map to 62 url-safe characters instead of going through base64 to get there.
* Use `crypto.pseudoRandomBytes` which is 'good enough' and 'less' blocky than `crypto.randomBytes` (this is due to how OpenSSL works underneath)