Feature: split chameleon from pyramid

This builds on top of my pull request from https://github.com/Pylons/pyramid/pull/1109, and as such it contains those commits as well.

Take a look at this and fix as required. There are a bunch of tests using minimal.pt, which I have removed since it is a chameleon only thing. Mostly in `test_integration.py`

---

    .........................................................................................................................................................................................................................................................................................................................E...............................................................................EE..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................EE.......................................................................................................................................................................................EEE............................................EE........E.........E........E.........E......EE...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
    ======================================================================
    ERROR: test_ctor_no_registry (pyramid.tests.test_config.test_init.ConfiguratorTests)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_config/test_init.py", line 73, in test_ctor_no_registry
        self.assertTrue(config.registry.getUtility(IRendererFactory, '.pt'))
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/zope.interface-4.0.5-py2.7-macosx-10.8-intel.egg/zope/interface/registry.py", line 169, in getUtility
        raise ComponentLookupError(provided, name)
    ComponentLookupError: (<InterfaceClass pyramid.interfaces.IRendererFactory>, '.pt')
    
    ======================================================================
    ERROR: test_add_route_with_view_renderer (pyramid.tests.test_config.test_init.TestConfiguratorDeprecatedFeatures)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_config/test_init.py", line 1327, in test_add_route_with_view_renderer
        view_renderer='files/minimal.txt')
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 507, in wrapper
        result = wrapped(self, *arg, **kw)
      File "/Users/xistence/Projects/pyramid/pyramid/config/routes.py", line 512, in add_route
        attr=view_attr,
      File "/Users/xistence/Projects/pyramid/pyramid/config/routes.py", line 580, in _add_view_from_route
        attr=attr,
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 470, in wrapper
        return wrapped(self, *arg, **defaults)
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 507, in wrapper
        result = wrapped(self, *arg, **kw)
      File "/Users/xistence/Projects/pyramid/pyramid/config/views.py", line 1355, in add_view
        self.action(discriminator, register, introspectables=introspectables)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 592, in action
        introspectable.register(self.introspector, action_info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.txt')
    
    ======================================================================
    ERROR: test_add_route_with_view_renderer_alias (pyramid.tests.test_config.test_init.TestConfiguratorDeprecatedFeatures)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_config/test_init.py", line 1355, in test_add_route_with_view_renderer_alias
        renderer='files/minimal.txt')
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 507, in wrapper
        result = wrapped(self, *arg, **kw)
      File "/Users/xistence/Projects/pyramid/pyramid/config/routes.py", line 512, in add_route
        attr=view_attr,
      File "/Users/xistence/Projects/pyramid/pyramid/config/routes.py", line 580, in _add_view_from_route
        attr=attr,
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 470, in wrapper
        return wrapped(self, *arg, **defaults)
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 507, in wrapper
        result = wrapped(self, *arg, **kw)
      File "/Users/xistence/Projects/pyramid/pyramid/config/views.py", line 1355, in add_view
        self.action(discriminator, register, introspectables=introspectables)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 592, in action
        introspectable.register(self.introspector, action_info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.txt')
    
    ======================================================================
    ERROR: test_add_view_with_template_renderer (pyramid.tests.test_config.test_views.TestViewsConfigurationMixin)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_config/test_views.py", line 1032, in test_add_view_with_template_renderer
        config.add_view(view=view, renderer=fixture)
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 470, in wrapper
        return wrapped(self, *arg, **defaults)
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 507, in wrapper
        result = wrapped(self, *arg, **kw)
      File "/Users/xistence/Projects/pyramid/pyramid/config/views.py", line 1355, in add_view
        self.action(discriminator, register, introspectables=introspectables)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 592, in action
        introspectable.register(self.introspector, action_info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.txt')
    
    ======================================================================
    ERROR: test_add_view_with_template_renderer_no_callable (pyramid.tests.test_config.test_views.TestViewsConfigurationMixin)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_config/test_views.py", line 1072, in test_add_view_with_template_renderer_no_callable
        config.add_view(view=None, renderer=fixture)
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 470, in wrapper
        return wrapped(self, *arg, **defaults)
      File "/Users/xistence/Projects/pyramid/pyramid/util.py", line 507, in wrapper
        result = wrapped(self, *arg, **kw)
      File "/Users/xistence/Projects/pyramid/pyramid/config/views.py", line 1355, in add_view
        self.action(discriminator, register, introspectables=introspectables)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 592, in action
        introspectable.register(self.introspector, action_info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.txt')
    
    ======================================================================
    ERROR: test_rescan (pyramid.tests.test_integration.RendererScanAppTest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 65, in setUp
        app = config.make_wsgi_app()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 962, in make_wsgi_app
        self.commit()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 633, in commit
        self.action_state.execute_actions(introspector=self.introspector)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 1096, in execute_actions
        introspectable.register(introspector, info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.pt')
    
    ======================================================================
    ERROR: test_root (pyramid.tests.test_integration.RendererScanAppTest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 65, in setUp
        app = config.make_wsgi_app()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 962, in make_wsgi_app
        self.commit()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 633, in commit
        self.action_state.execute_actions(introspector=self.introspector)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 1096, in execute_actions
        introspectable.register(introspector, info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.pt')
    
    ======================================================================
    ERROR: test_two (pyramid.tests.test_integration.RendererScanAppTest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 65, in setUp
        app = config.make_wsgi_app()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 962, in make_wsgi_app
        self.commit()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 633, in commit
        self.action_state.execute_actions(introspector=self.introspector)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 1096, in execute_actions
        introspectable.register(introspector, info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.pt')
    
    ======================================================================
    ERROR: test_basic (pyramid.tests.test_integration.TestStaticAppNoSubpath)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 227, in test_basic
        result = self.staticapp(context, request)
      File "/Users/xistence/Projects/pyramid/pyramid/static.py", line 126, in __call__
        raise HTTPNotFound(request.url)
    HTTPNotFound: http://localhost/minimal.pt
    
    ======================================================================
    ERROR: test_basic (pyramid.tests.test_integration.TestStaticAppUsingAbsPath)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 77, in test_basic
        res = self.testapp.get('/minimal.pt', status=200)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 199, in get
        expect_errors=expect_errors)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 494, in do_request
        self._check_status(status, res)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 526, in _check_status
        "Bad response: %s (not %s)", res_status, status)
    AppError: Bad response: 404 Not Found (not 200)
    
    ======================================================================
    ERROR: test_not_modified (pyramid.tests.test_integration.TestStaticAppUsingAbsPath)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 122, in test_not_modified
        res = self.testapp.get('/minimal.pt', status=304)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 199, in get
        expect_errors=expect_errors)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 494, in do_request
        self._check_status(status, res)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 526, in _check_status
        "Bad response: %s (not %s)", res_status, status)
    AppError: Bad response: 404 Not Found (not 304)
    
    ======================================================================
    ERROR: test_basic (pyramid.tests.test_integration.TestStaticAppUsingAssetSpec)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 77, in test_basic
        res = self.testapp.get('/minimal.pt', status=200)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 199, in get
        expect_errors=expect_errors)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 494, in do_request
        self._check_status(status, res)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 526, in _check_status
        "Bad response: %s (not %s)", res_status, status)
    AppError: Bad response: 404 Not Found (not 200)
    
    ======================================================================
    ERROR: test_not_modified (pyramid.tests.test_integration.TestStaticAppUsingAssetSpec)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 122, in test_not_modified
        res = self.testapp.get('/minimal.pt', status=304)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 199, in get
        expect_errors=expect_errors)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 494, in do_request
        self._check_status(status, res)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 526, in _check_status
        "Bad response: %s (not %s)", res_status, status)
    AppError: Bad response: 404 Not Found (not 304)
    
    ======================================================================
    ERROR: test_includelevel1 (pyramid.tests.test_integration.TestStaticAppWithRoutePrefix)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 235, in test_includelevel1
        res = self.testapp.get('/static/minimal.pt', status=200)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 199, in get
        expect_errors=expect_errors)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 494, in do_request
        self._check_status(status, res)
      File "/Users/xistence/.ve/pyramid_dev/lib/python2.7/site-packages/webtest/app.py", line 526, in _check_status
        "Bad response: %s (not %s)", res_status, status)
    AppError: Bad response: 404 Not Found (not 200)
    
    ======================================================================
    ERROR: test_first (pyramid.tests.test_integration.TestViewDecoratorApp)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 65, in setUp
        app = config.make_wsgi_app()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 962, in make_wsgi_app
        self.commit()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 633, in commit
        self.action_state.execute_actions(introspector=self.introspector)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 1096, in execute_actions
        introspectable.register(introspector, info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.pt')
    
    ======================================================================
    ERROR: test_second (pyramid.tests.test_integration.TestViewDecoratorApp)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/Users/xistence/Projects/pyramid/pyramid/tests/test_integration.py", line 65, in setUp
        app = config.make_wsgi_app()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 962, in make_wsgi_app
        self.commit()
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 633, in commit
        self.action_state.execute_actions(introspector=self.introspector)
      File "/Users/xistence/Projects/pyramid/pyramid/config/__init__.py", line 1096, in execute_actions
        introspectable.register(introspector, info)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 229, in register
        (category_name, discriminator)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 153, in relate
        introspectables = self._get_intrs_by_pairs(pairs)
      File "/Users/xistence/Projects/pyramid/pyramid/registry.py", line 148, in _get_intrs_by_pairs
        raise KeyError((category_name, discriminator))
    KeyError: ('renderer factories', '.pt')
    
    ----------------------------------------------------------------------
    Ran 2232 tests in 4.901s
    
    FAILED (errors=16)