wip-442: Token aware writes

What about: 
1. Not using Boxes.
2. Adding a private `HashMap[V, Int]`, for storing an index.
3. Modifying the update method signature:
```scala
def update(value: V)(f: V => V): V
```
4. Prohibit any modification of values stored in this queue outside of f.
5. Perfectly, we'd use immutable values and just replace, but I agree this might not be practical sometimes.