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

Based on PR #964
Use config_item() in CI_Output::__construct()
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)
Merge branch 'feature/uri_routing_overhaul' into 'develop'
Fix #2827
Fix #2825
Merge branch 'develop' into feature/output_compressed_cache
Fix CI_URI:: not being properly indexed
Merge branch 'develop' into feature/output_compressed_cache
Fix 2 Router-related errors
Merge branch 'develop' into feature/output_compressed_cache
Fix #2829
Added save_queries config setting in config/database.php
Fix whitespaces to tabs.
Merge pull request #2830 from abdmaster/fix/config/database_save_queries

Added [save_queries] config in config/database.php
Polish changes from PR #2830
Merge branch 'develop' into feature/output_compressed_cache
Fix #2737
Fix #2729