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
`show_error()` does an `exit()` call (or `die()`, not sure) ... this return is dead code. :)