Add a plugin to the list of plugins and prepare it for beeing
            applied to all routes of this application. A plugin may be a simple
            decorator or an object that implements the :class:`Plugin` API.

def install(self, plugin):
        ''' Add a plugin to the list of plugins and prepare it for beeing
            applied to all routes of this application. A plugin may be a simple
            decorator or an object that implements the :class:`Plugin` API.
        '''
        if hasattr(plugin, 'setup'): plugin.setup(self)
        if not callable(plugin) and not hasattr(plugin, 'apply'):
            raise TypeError("Plugins must be callable or implement .apply()")
        self.plugins.append(plugin)
        self.reset()
        return plugin