Compress output before storing it to cache, if output compression is enabled

Based on PR #964
Use config_item() in CI_Output::__construct()
IE11 User Agent support added
Don't throw in mock autoloader

This behavior doesn't appear to be used at all.

This fixes HHVM compatibility: HHVM optimizes class_exists() to a
dedicated bytecode - as it's not a function call, it doesn't show up
in the backtrace. 100% of the tests pass with this change.
Merge pull request #2815 from fredemmott/fix-hhvm

Don't throw in mock autoloader
Enable HHVM on travis-ci
Dont break the build if tests only fail on HHVM
Merge pull request #2819 from fredemmott/hhvm-travis

Enable HHVM on travis-ci
Fix incorrect checks for the fwrite() return value

! fwrite() could trigger false-positives as it is possible for it to return 0
instead of boolean FALSE. (issue #2822)

Also removed an unnecessary log level check that caused an extra space to be inserted
for the INFO level. (proposed in PR #2821)
CI_URI changes related to the 'permitted_uri_chars' setting

 - Initialize and cache the value in the class constructor instead of searching for it every time
 - Removed the preg_quote() call from _filter_uri() to allow more fine-tuning from configuration
 - Renamed _filter_uri() to filter_uri() - it was public anyway and using it cannot break anything

Related: issue #2799
Trident prefix added to avoid potential false positives.
Merge pull request #2811 from dionysiosarvanitis/fix/ie11_user_agent

IE11 User Agent support added
Fix #2822: Incorrect usage of fwrite()

We only used to check (and not always) if the return value of fwrite() is boolean FALSE,
while it is possible that the otherwise returned bytecount is less than the length of
data that we're trying to write. This allowed incomplete writes over network streams
and possibly a few other edge cases.
Merge changes from develop
Fix #2799 by adding conditional PCRE UTF-8 support to CI_URI::filter_uri()

Also did a tiny micro-optimization in the Utf8 class.
URI Routing overhaul

 - Allow multiple levels of controller directories (supersedes PRs #390, #2439)
 - Add support for per-directory 'defaul_controller' and '404_override' (resolves issue #2611; supersedes PR #939)
 - Fixed a bug where default_controller was called instead of triggering 404 if the current route is inside a directory
 - Removed a few calls from CI_Router to CI_URI that made a necessity for otherwise internal CI_URI methods to be public:

    - Removed CI_URI::_fetch_uri_string() and moved its logic into CI_URI::__construct()
    - Removed CI_URI::_remove_url_suffix, CI_URI::_explode_segments() and moved their logic into CI_URI::_set_uri_string()
    - Removed CI_URI::_reindex_segments() altogether ( doesn't need further manipulation, while  is
      public anyway and can be properly (and more effectively) replaced on the spot)
Add some unit tests for CI_Input
Add a unit test for CI_Utf8::_is_ascii()
Disable HHVM mysqli and pgsql tests

mysqli and PostGre support isn't going to be in a good state for a
while.
Merge pull request #2823 from fredemmott/hhvm-travis

Disable HHVM mysqli and pgsql tests