Better two-way binding setup

This PR addresses both #775 and #786. There is less convoluted setup logic in the `Element$init` and `Element$render` methods - that logic now belongs to the bindings themselves, as it should.

It also tidies up some of the mess left over from #696.