Medley: Cleanup, better Config, various

@tdfischer, @scottschurr

```
// Example of new API for getting config settings:
// This goes in the class implementing the logic instead of
// being all grouped in Application.cpp
//
    auto const& section = getConfig()["overlay"];
    setup_.test_client = get <unsigned> (section, "test_client") != 0;
    setup_.autoconnect = get <unsigned> (section, "autoconnect") != 0;
    auto const& superpeer = get <std::string> (section, "superpeer");
    if (superpeer == "never")
        setup_.superpeer = Superpeer::superpeerNever;
    else if (superpeer == "always")
        setup_.superpeer = Superpeer::superpeerAlways;
    else
        setup_.superpeer = Superpeer::superpeerAuto;

// Corresponding entries in .cfg
[overlay]
test_client = 1
autoconnect = 1
superpeer = never
```
Yeah, I can't think of a way. An obvious attempt would be to write `std::list<std::unique_ptr<header>>` but there's no way to get an iterator given only an element (which is all you have if you discover the element by accessing the set).