Support building a dispatcher with a simple DSL

Building a dispatcher this way will raise
Substation::AlreadyRegisteredError if any given
name is already registered.

SUBWAY = Substation::Environment.build { ... }
CHAIN  = SUBWAY.chain { ... }
env    = Object.new

dispatcher = SUBWAY.dispatcher(env) do
  dispatch :create_person, CHAIN
end

OR (if no substation environment is available)

dispatcher = Substation::Dispatcher.build(env) do
  dispatch :create_person, CHAIN
end