Revision of Operator Interface.

This commit makes some revision to the way Operators will work,
focussing on developer simplicity.

This change introduces the before(), after() and processTuple() hooks
which can be used by Operators to control their behaviour.

Operators now feature explicit start() and finish() functions rather
than the old waitForEOS().

In the future Sink Operators will have the responsibility of logging a
finish message once they determine a stream has ended (most likely
timeout based)