From http://www.webtoolkit.info/php-random-password-generator.html#more-186