Password Generation Library

(I'm mostly creating this PR so Travis will run the tests. Cough.)

Features:
* Generate a random password
* Hash a password with PBKDF2
* Securely validate a PBKDF2 hash

Other changes made by this PR:
* Added test cases
* Added `CI_Security::compare()` to evaluate a string without leaking timing information
In similar expressions, we don't use just the raw variable ... it could trigger PHP errors if the var is missing. Also, `AND` -> `&&`:

    isset($rules['lower']) && $charset .= 'abcdefghijklmnopqrstuvwxyz';

I'd also use another name instead of `$charset` ... you know what people will confuse it with. :)