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)
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
Add CI_Model unit test
Unit tests: Full code coverage of Benchmark class
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'