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
    array $rules = NULL

Then a simple `isset()` would tell you if the parameter was used, while it would be otherwise guaranteed to be an array. :)