Split and document #run_config.
Add configuration DSL delimiters.
Add @api for configuration DSL.
Use hashes to store drivers and servers.
Require specific module enabling.

This makes it easier to disable modules, and is a step towards
module hot-swapping.
Extract module construction code.

ModuleSets now take responsibility for this.  In future, ModuleSets will
probably also own the modules, and allow stop/start access.
Begin ModuleSet specs.
Move all Launcher dependency injection to config DSL.

The Launcher no longer accepts an options hash.
Remove dead code in Launcher.
[breaking change] Move module DSLs into ModuleSets.

This will break your config.rb files, as this:

```ruby
driver :foo, Bar do
  # ...
end

server :baz, Shpee do
  # ...
end

enable_driver :foo
enable_server :baz
```

is now this:

```ruby
drivers do
  configure :foo, Bar do
    # ...
  end
  enable :foo
end

servers do
  configure :baz, Shpee do
    # ...
  end
  enable :baz
end
```
Raise error if #enabling an unconfigured module.

This allows the failure to be tested, and makes sure bra 'fails fast' on
such an error.
Separate ModuleSet.
Split the logger code out of the launcher.
Merge pull request #29 from UniversityRadioYork/mw-cleanup-launcher

Cleanup launcher