switchable alternate step implementations

When developing software that has to interact with many third party
components (e.g. control the behavior of various OS settings and
components, talk to external servers and databases and co.), it can come
handy to have two different sets of step automations for the same
feature files:

 * one for a quick and reliable integration check that can
   be run frequently in a development environment (without the external
   resources that need to be allocated and released or might become
   flaky due to network latency or high load, etc.) which implements
   steps by inspecting what comes out from the software on its
   boundaries to external components,

 * and another, that verifies the behavior of the full stack in a
   testing copy of production systems and networks using step
   implementations that inspect the effect of the software on the
   external components.

This patch provides a solution for such use cases by allowing the name
of the "steps/" directory and "environment.py" to be changed in a
consistent way with a single configuration option or command-line
parameter as described in "step.alternate_step_implementations.feature".