change the Projector interfaces to support long running tasks

the intermediate projectors now no longer have to support
"gathering" rows but only have to pass them to a downstream.

the last projector of a chain is now a "ResultProvider"
which exposes the result as listenableFuture. Due to this
Projectors can do network io without having to block.
fix: AND operator normalization was wrong if one of the arguments is a boolean
fix negative values in genericProperties
Merge pull request #641 from crate/m/fix_negative_generic_property

fix negative values in genericProperties
add IndexWriterProjector
wip