CI_Upload changes

- Method chaining support.
- A more abstract resetting of the default settings.
- Added an option to initialize() to disable resetting to default settings.
- Removed method mimes_types() and slightly optimized chunks of code where it was used.
- Added the ability to pass allowed_types as an array.
Add test cases for CI_Upload::__construct(), CI_Upload::initialize()
Remove CI_Calendar::

Only use it in generate().
Minor improvements to CI_FTP
More CI_Lang tests
Revert some changes ... our testing sucks
[ci skip] Alter a docblock
Don't use globals

- Use load_class() to get objects during bootstrap process.
- Change load_class() to accept a class constructor parameter
  instead of previously unused class name prefix.
- Change CI_Router::__construct() to accept  as a parameter.
Really don't use globals
Remove a needless check in CI_Output::append_output()
[ci skip] A tiny improvement in CI_Email
Fix #2901
Use strings instead of integers for migration version numbers

- Allows timestamp versions to work on 32-bit systems.
- Fixes #2902.
- Supersedes PR #2368.
Add array notation support for file field names in CI_Upload

Requested in #1691
Make db_pconnect an alias for db_connect(TRUE) and reduce code repetition
Remove error suppression usage from db_connect()
[ci skip] Add a changelog entry
Revert to error suppression on mysql_(p)connect() due to deprecation messages
Don't use error suppression on realpath() + style adjustments
Don't use error suppression on is_dir(), file_exists()