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