Users of the API may now add their own 'on'-filters by calling
Configuration#add_filter, e.g:
`Capistrano::Configuration.env.add_filter(RegionFilter.new('NE'))`.
An filter object passed into this method must respond to .filter, and
this method should accept an array of Server objects and return a subset
of this array.
Tests have been added that checks that:
* A filter can be added without throwing an error
* Trying to add a filter without a filter method throws a
TypeError
* An added filter is used to filter a list of servers
* add_filter accepts a block, and raises an ArgumentError
if passed both a block and an object.
This makes it much easier (no hacks needed) to determine whether the
user has installed an SCM plugin: simply check that the plugin responds
to `scm?` and that it returns true. A new SCM::Plugin base class makes
it easy to write such a plugin.
This commit also updates the website docs that explain how to write SCM
plugins so that they refer to this new technique.