Use more random source for randstr

* Use `crypto.pseudoRandomBytes` instead of `Math.Random` as our source for randomness.
* Add the first test case for randstr ever. Heres how I feel about that:
![](http://i.imgur.com/jWuYF5q.gif)