=str - Various Flow and FlowMaterializer improvements

THIS IS A WIP-BRANCH/PR for discussion and improvement, DO NOT MERGE YET


  - Switches from using size-of-1/2 Vectors to using Lists
  - Fixes an issue where processorForNode wouldn't use the dispatcher form the settings
  - Adds a dedicated Collect fusion op
  - Adds various simplifications to ActorBasedFlowMaterializer
  - Adds FIXMEs where appropriate
  - Switches `grouped` to use a VectorBuilder
  - Adds support for `scan`
So javap says that the only difference is in the hashCode() method. Where `case object` has
```
  public int hashCode();
    Code:
       0: sipush        2188
       3: ireturn
```
and `final case object` has
```
  public int hashCode();
    Code:
       0: ldc           #57                 // int 70450
       2: ireturn
```

So `case object` saves three bytes? (does not need int constant - 1 byte for the longer opcode)