Memory platform counters

Adding summingbird counter support for the Memory platform.
Wait, that loop would fail due to the putIfAbsent. Here is a fix:

```scala
def registerCounters(jobID: JobId, counters: List[(String, String)]): Unit = {
  val memoryCounters == // same as it is now.
  @annotation.tailrec
  def put(m: Map[String, MemoryCounter]): Unit =
    countersForJob.putIfAbsent(jobID, memoryCounters) match {
      case null => () // The jobID was not present
      case previous if !previous.keySet.contains(m.keySet) => // Make another try
         // prefer the old values
         if(countersForJob.replace(jobId, previous, (m ++ previous)) () else put(m)
      case _ => () // there is something there, but the keys are all present
    }

   put(memoryCounters)
  }
```