Untangle snapshot mapper

Also fixed performance issue with `StructEncoding` arbitrary
It is exactly the same as the code you have, just to make sure we are on the same page I mean:
```
object Counter {
  def apply(c: Int => Unit): Counter = new Counter { def count(n: Int) = c(n) } 
}
```
In the MR implementation, there is no scala Function2, but in this case you always have to call `c`.