Make some classes public so we can make custom platforms

actually just below, you evaluate default more than once.

Might be better to do:

```scala
if (v == null) {
  val vToPut = default
  map.putIfAbsent(k, vToPut) match {
    case null => vToPut
    case vExists => vExists
  }
}
```
In this case it can still be evaluated when it is not needed (due to a concurrent put beating it in), but there are no loops and no two evals.