Rebase3

since we last spoke...

* jshint is happier (it found a few more orphaned functions)
* I exposed the character range
* I set the default character range to printable ascii (which exposed that ret bug)
* I exposed a way to override the random number generator
* I wrote tests for the character range and the PRNG

things that are probably wrong (but might be right):
* setting the default character range to printable ascii
* putting `defaultRange` and `randInt` on the class rather than the instance

I put the state of the first PR (and some cleanup) in one commit, and the defaultRange and randInt things in the other.  They're really probably 2 PRs but it seemed like there was similar functionality that got stepped on by the first PR.  It seemed like a shame to leave it crippled without any way of controlling the character range
`Math.random()`