Move all calls of BlockFromToEvent to flow() method.

Currently BlockFromToEvents are sent regardless if the water flows or not.
By moving the event creation into the flow() method the event is only
called when the water actually flows. Doing this required a new class
property to be added `nearby_source` which must be set to the 'from'
block before calling flow().