Password Generation Library

(I'm mostly creating this PR so Travis will run the tests. Cough.)

Features:
* Generate a random password

Other changes made by this PR:
* Added test cases
Throw an exception or use `show_error()`. :)