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
return FALSE or use `show_error()` (CI-specific)

`trigger_error()` is only used in system/core/compat/ to mimic PHP's behavior as much as possible.