Über Binding PartI : Adding support for property level binding using IBinderMetadata

Maybe we should change the flow here by adding some intermediating objects. Right now there's a fair bit of work that appears to be done twice.

1). Create a nested state/context for each property
2). Ask them if they can be bound
3). Do binding if you want to.

Some abstractions here would really improve this code