! testkit: enable custom ExceptionHandlers in routing tests

Up to now the `~>` operator injecting a request into a test route always wrapped the route execution with the default ExceptionHandler thereby ignoring potentially existing custom ExceptionHandlers. This is fixed with this patch.
 The change to the public API consists of one additional member to the implicit `TildeArrow.injectIntoRoute` method, which should rarely be called directly. In most cases this change therefore shouldn't break anything.
= routing: fix `cache` directive erroneously wrapping exceptions bubbled up from its inner route, closes #361
Merge pull request #362 from spray/ticket/361

#361: fix `cache` directive erroneously wrapping exceptions bubbled up from its inner route
= can: fix request parser not failing early on illegal requests w/o protocol, closes #363
= docs: update `current-version` chapter with info on Akka 2.2.0 final compatibility
= routing: improve scaladoc on `Rest` PathMatcher
Merge pull request #364 from spray/ticket/363

= can: fix request parser not failing early on illegal requests w/o protocol, closes #363
= can: fix bug in parsing responses with status line split across packets, fixes #369
Merge pull request #370 from spray/ticket/369

= can: fix bug in parsing responses with status line split across packets, fixes #369
+ http: allow empty `Host` headers

According to http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-22#section-5.4 the Host header might be empty.
This message from Roy Fielding also suggest this:
http://lists.w3.org/Archives/Public/ietf-http-wg/2009AprJun/0705.html
! 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.
Merge pull request #366 from spray/ticket/348

Several extensions/fixes, close #348
Added support to play-json with basic error handling.