Changes HiveFlows behaviour to be more inline with normal Flow behaviour

Changes the start method to run the query asynchronously.
Supports FlowListeners at least for the onStart, onCompleted and onThrowable events.

This is pretty rough. I wasn't sure how to best separate the logic between HiveRiffle and HiveFlow. HiveRiffle seems kind of superfluous now. I also struggled with the access restrictions on a number of core methods in BaseFlow, which meant that I had to reimplement them in HiveFlow.