! can, routing, servlet, util: improve *Settings infrastructure

All our Setting model classes follow the same pattern: apart from the default case class constructor we supply two `XxxSettings.apply` overloads:

1. `def apply(system: ActorSystem): XxxSettings`
2. `def apply(config: Config): XxxSettings`

The first one simply calls the second with the ActorSystem's config. However, so far it also selected the respective sub-config for the Settings, e.g. "spray.can.server" for the spray-can `ServerSettings`. The second overload therefore required the correct *sub-config* for the Settings rather than a root-level Config object. Internally it then applied a `withFallback(ConfigFactory.defaultReference(getClass.getClassLoader))` to this sub-config, which was ineffective since the defaultReference supplies a root-level config (we were mixing a root-level config into a sub-config).

This patch fixes this problem by moving sub-config selection from the first overload into the second. It also improves DRYness by factoring out common logic into a new superclass `SettingsCompanion` and adds another convenience `apply` overload for settings overrides given as a String.

Even though the public API in terms of method signatures is not changed by this patch the semantics of the parameter on the second overload change, thereby breaking all code that uses it.
= can: add check for "Host header present on HTTP/1.1 request" directly to request parser

 So far this check was performed by the higher-level effective request target establishment.
 Since we are going to modify and extend that logic with the following commits we add an
 explicit check in the lower-level request parser with this patch.
+ can, http: introduce `spray.can.server.default-host-header` setting, closes #348

We also add a second parameter to the `HttpRequest#withEffectiveUri` method. However, this change shouldn't break anything in most cases since this parameter has a default value.