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

Based on PR #964
Merge changes from develop
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)
Minor changes related to CI_User_agent

Fixed a bug where both accept_charset() and accept_lang() improperly parsed headers
if they contained spaces between data separators (which is valid).

Also made is_referral() testable by replacing its static cache var with a class
property and added some more unit tests for the library as a whole.
Add autoloading library aliasing support (supersedes PR #2824)
Merge branch 'feature/uri_routing_overhaul' into 'develop'
Merge branch 'develop' into feature/output_compressed_cache
Added save_queries config setting in config/database.php
Polish changes from PR #2830
Merge branch 'develop' into feature/output_compressed_cache
Fix #2737
Fix #2729
Add support for optional table attributes to CI_DB_forge::create_table()

Supersedes PRs #989, #2776
Related issue: #41
SQLSRV improvements

Mainly for performance (issue #2474), but also added a 'scrollable' configuration flag
and auto-detection for SQLSRV_CURSOR_CLIENT_BUFFERED (only available since SQLSRV 3).
Merge branch 'feature/dbforge_table_attributes' into develop
CI_Security::_decode_entity() to replace dangerous HTML5 entities

Related to issue #2771
Merge branch 'develop' of /Users/neko/github/CodeIgniter/user_guide_src/ into develop_japanese