Node crypto.randomBytes fallback 

Chained on #48.

In the case where this module is run in an environment where `window.crypto || window.msCrypto` doesn't exist, it is still nice to be able to test with actual random values.

This PR adds both the `window.msCrypto` fallback, which is cryptographically safe; and the node `crypto.randomBytes`.
To avoid browserify unnecessarily pulling in the entire module here unnecessarily, `require('cry' + 'pto')` is used.

With this change, all tests are now passing.