Projectors (FOR REVIEW)

please review the projectors and you also may merge it as soon as we agreed on everything.

TODO: Autogenerate ProjectionMethods. Any suggestions which methods we should expose to the user?

* FirstOrderStatistics (Mean,Min,Max etc).

what else?

@dietzc could we try to make `Project` more flexible to take either a `Function` or an `Op`? It seems verbose to have to look up the op and then also generate the method, especially since the I/O types are between the `Op` lookup and the `ProjectMethod` generation.

Then we could delete this line, and 69 would become:

```
method = (ProjectMethod<ByteType, DoubleType>) ops.op(ProjectMethod.class, DoubleType.class, Img.class, Sum.class);
```

or something similar...?