Enable custom logic to determine worker configuration

Previously, configuration could only be loaded from a
YAML file, or a Hash instance.

This change introduces the concept of a *configuration loader*.

All of the previous configuration logic has been moved to the
FileOrHashLoader class, which will be used by default.

To provide your own logic, you set the `configuration_loader`
class variable on Resque::Pool to an object that
responds to `#call` (which can simply be a lambda/Proc).

See the README for more details.
Allow the configuration to change automatically at runtime

`#load_config` is now called whenever a worker completes
a job, allowing a configuration loader to modify
the config each time.

Some configuration strategies (like the default
config YAML file loader) may want to return the same
value every time until explicitly asked to reload.
It is the loader's responsibility to cache the value
they return. They can implement a `#reset!` method,
which will be called when the HUP signal is received.

Modified the config file specs to demonstrate that
repeated calls to `#load_config` are harmless and do
not reload the configuration from disk.