Added key-value binding, and other cleanup/rewrites

binding is modeled after the bind: and unbind: functionality here: https://developer.apple.com/library/mac/documentation/cocoa/reference/ApplicationKit/Protocols/NSKeyValueBindingCreation_Protocol/Reference/Reference.html
except it is only one-directional. but it works in Cocoa Touch, unlike apple's.

refactors/rewrites were partly to support this new functionality and partly because i got carried away :o) hope it's ok and you like it. i haven't tested on non-ARC environment, but i did read up a TON on retain/release stuff :oP