Introduce configuration manager

In normal use of Resque::Pool, having a static YAML file for pool
configuration is fine. However, at high stress levels for particular
queues, changing the configuration on the fly is not currently possible.
While this isn't necessarily something Resque::Pool needs to manage, it
is currently impossible to refresh queue configuration on the fly
without monkey-patching.

This is where the idea of a configuration manager comes in. By default,
Resque::Pool will define a no-op configuration manager which leaves the
current behavior in place. However, anyone who wants to write their own
configuration manager is free to do so by creating their own
configuration manager class.

    class CustomConfigManager < Resque::Pool::ConfigManager
      def refresh!
        pool.config.replace { 'foo,bar,baz' => 200 }
      end
    end

    Resque::Pool.config_manager = CustomConfigManager
    pool = Resque::Pool.config({'a' => 1, 'b' => 2, 'c' => 3})
    pool.config
    # => {'a' => 1, 'b' => 2, 'c' => 3}

    pool.refresh_config # called while maintaining queue sizes
    pool.config
    # => {'foo,bar,baz' => 200}

This opens the door to dynamic configuration that is either
server-specific or even based on a database-backed solution.