= add new BackPressureHandling pipeline stage

Automated back-pressure handling is based on the idea that pressure
is created by the consumer but experienced at the producer side. E.g.
for http that means that a too big number of incoming requests is the
ultimate cause of an experienced bottleneck on the response sending side.

The principle of applying back-pressure means that the best way of handling
pressure is by handling it at the root cause which means throttling the rate
at which work requests are coming in. That's the underlying assumption here:
work is generated on the incoming network side. If that's not true, e.g. when
the network stream is a truly bi-directional one (e.g. websockets) the strategy
presented here won't be optimal.

How it works:

No pressure:
  - forward all incoming data
  - send out ''n'' responses with NoAcks
  - send one response with Ack
  - once that ack was received we know all the former unacknowledged writes
    have been successful as well and don't need any further handling

Pressure:
  - a Write fails, we know now that all former writes were successful, all
    latter ones, including the failed one were discarded (but we'll still receive CommandFailed
    messages for them as well)
  - the incoming side is informed to SuspendReading
  - we send ResumeWriting which is queued after all the Writes that will be discarded as well
  - once we receive WritingResumed go back to the no pressure mode and retry all of the buffered writes
  - we schedule a final write probe which will trigger ResumeReading when no lowWatermark is defined
  - once we receive the ack for that probe or the buffer size falls below a lowWatermark after
    an acknowledged Write, we ResumeReading

Possible improvement:
  (see http://doc.akka.io/docs/akka/2.2.0-RC1/scala/io-tcp.html)
  - go into Ack based mode for a while after WritingResumed
+ add automatic back-pressure handling to HttpServerConnection
! http: add support for Accept-Header extensions and media-type parameters, closes #310

Apart from adding another member to the MediaType and MediaRange case class models
(`parameters: Map[String, String]`) this patch also fixes an inconsistency in API design.
For the `HttpCharset` and `HttpEncoding` type you create a custom model instance with
the `custom` method defined on the `HttpCharset` or `HttpEncoding` companion object,
e.g. `HttpCharset.custom("foo")`.
For media-types the `custom` method was defined on the `MediaTypes` object. This has
been changed, you now create a custom media-type with `MediaType.custom`.

Note that quality value (e.g. `q=.2`) on media-range definitions in an `Accept` header are
still not supported in content negotiation. Since we don't want the existence of quality
values in request `Accept` headers to trigger the creation of custom (unregistered)
MediaRange or MediaType instances (which would come with performance penalty due to
not reusing registered instances) we filter the `q` values out of the parameters list.
You therefore won't find them in the `parameters` map.
= travis: limit parallelism for resource intensive compilation to 2

Hopefully this should help to get rid of SIGSEVs during the build.
Merge pull request #326 from spray/feature/fix-travis-sigsev

= travis: limit parallelism for resource intensive compilation to 2
= can: switch off backpressure handling for some tests

I.e. tests that assume that writes fall out unchanged at the bottom
of the pipeline.
= io: properly handle CloseCommands in backpressure handling

CloseCommands (apart from `Abort`) have to be queued like Writes, so that
pending writes are properly handled before the connection closed.
= io: handle case where backpressure probe fails
= io: refactoring: use Pipelines instead of (EPL, CPL)
= can: simplification
+ io: add DynamicPipelines which is a combination of Dynamic{Event,Command}Pipeline
= io: switch BackPressureHandling to DynamicPipelines
= http: simplify Accept header parsing
Merge pull request #325 from sirthias/master

#310: http: add support for Accept-Header extensions and media-type parameters
Merge pull request #324 from spray/feature/backpressure-stage

Add automatic back-pressure handling
Merge branch 'master' into release/1.1