+str #15193 Expose some test producers in StreamTestKit
=act,tes Initial draft of internal MetricsKit

Note: This is NOT aimed to provide an micro-benchmarking solution.
The goal is to provide data for broad trend analysis. For techniques
that fight the inliner and other specialised techniques, refer to JMH.

+ custom console and graphite reporters
  - had to be custom because it's not possible to add custom metric
    types to the existing reporters
+ initial hdr.Histogram histogram() provider, see
  http://latencyutils.github.io/LatencyUtils/
+ Not using timers provided by Metrics, instead use the above histogram
+ Added average Actor size measurement
+ Measuring the "blocking time" when an actor is created, before we fire
  of the async part of this process; Measures in loop and will fluctuate
  a lot. Times are in `us` -- System.nanoTime should provide good enough
  resolution.
+ Measuring total actor creation time by using
  `KnownOpsInTimespanTimer`, which given a known number of ops, in a
  large amount of time, roughtly estimates time per one operation.
  // Yes, we are aware of the possibility of GC pauses and other horrors
+ All classes are `private[akka]`, we should not encourage people to use
  this yet
+ Counters use Java 8's `LongAdder`, which is metric's private;
  The new trend in Java land will be copy paste-ing this class ;)
+ Metrics are logged to Graphite, so we can long-term analyse these
+ Reporters are configurable using typesafe-config

! I'm not very happy about how I work around Metrics not being too open
  for adding additional custom metrics. Seems like a hack at places.
  I will consider removing the Metrics dependency all together.
  numbers

Example output:

```
-- KnownOpsInTimespanTimer-------------------------------------------
  actor-creation.total.creating-100000-actors.Props|new-EmptyArgsActor|…||-same
               ops = 100000
              time = 1.969 s
             ops/s = 50782.22
               avg = 19.69 μs

-- AveragingGauge---------------------------------------------------
  actor-creation.Props|new-EmptyArgsActor|…||-same.avg-mem-per-actor
                avg = 439.67
```

Conflicts:
	akka-actor-tests/src/test/scala/akka/actor/ActorPerfSpec.scala
	project/Dependencies.scala
	project/TestExtras.scala
	project/plugins.sbt
+str #15142 Initial support for timing streams

This PR includes most notably:
* `timed(_.streamops)` wrapper that measures time between start of
   processing and end of it.
* `timedIntervalBetween(T => Boolean)` which measures time between
  matching elements appearing in the stream
* DSL is enabled by importing from `extra.Implicits`
* Methods can be used without implicit by Importing extra.Timed.timed()
Merge pull request #15182 from ktoso/wip-timed-ktoso

+str #15098 timed on streams
+str #15223 `timed` extra combinators for Duct
Note: not too happy about duplication of impl, but is required due to
the Flow and Duct not sharing any types (could use structural, not going there though).

Resolves #15223
Merge pull request #15225 from ktoso/wip-timed-duct-ktoso

+str Timed ops for Duct[I, O]
+proj,ben #15180 adding akka-bench-jmh, JMH benchmarks

How to use:
```
project akka-bench-jmh
run -i 1 -wi 1 -v extra -f 0
```

Added a few benchmarks for basics like
* actor ! // probably skewed currently
* event stream subscribing
* event stream publishing
* actor creation

Resolves #15180
Merge pull request #15185 from ktoso/wip-JMH-ktoso

+pro,ben #15180 add akka-bench-jmh, enable running jmh benchmarks form sbt
Merge pull request #15210 from akka/wip-15193-test-producers-patrikwn

+str #15193 Expose some test producers in StreamTestKit
+str #15195 Add internal SynchronousProducerFromIterable
+str #15197 Add flow.append(duct)

* and duct.append(duct), and missing javadsl flow.produceTo
Merge pull request #15202 from akka/wip-15195-producer-interable-patriknw

+str #15195 Add internal SynchronousProducerFromIterable
Merge pull request #15204 from akka/wip-15197-flow-append-duct-patriknw

+str #15197 Add flow.append(duct)
+str #15173 Add user support for actor consumer endpoint

* with full control over back pressure
* and pluggable request strategy