significant change to binding syntax

new model uses an infix binding, so the normal form would be

(object, property) < bind() < (object, property)

use pipes for two-way:

(object, property) | bind() | (object, property)

argument to bind is the translator function (default is passthru):

(object, property) < bind(lambda x: x.upper()) < (object, property)
completed new binding syntax

resolved confusion about how the bindable class mixes in - now it its
completely independent of constructors.  All tests now reflect the new
object > bind() > object syntax