View listener with wrapper

This is built on #863, it adds a wrapper enabling chaining, type hinting and simpler listeners.
Okay, I would compromise then and say I would we could add this, but as an undocumented feature. The way I envisage this working and how I plan to document it, is as a pipeline, with view listeners feeding in to one another until one of them produces a response. Having an extra rule, that if you return null, the return value from the previous listener will be passed to the next one isn't appealing to me.