Provides classes for binding observable objects, for example UI widgets and model objects.

## Package Specification

This package provides classes that can be used to synchronize state between pairs of observable objects with optional data type conversion and validation.

A `DataBindingContext` is used to manage a list of `Bindings` with their validation results.

Concrete subclasses of `Binding` synchronize state between two observables, called the target observable and the model observable. Usually, the binding will first copy the current state of the model observable to the target observable and from then on track changes on both sides, reacting to changes on one side by performing the corresponding change on the other side.

For each binding, two `UpdateValueStrategy` or `UpdateListStrategy` objects (one for each direction) is used to control how the binding should synchronize, and can be used to specify data type converters and validators.

`AggregateValidationStatus` allows clients to aggregate the current validation statuses of a list of bindings, typically obtained from a data binding context.

For advanced validation, conversion, or similar requirements that affect the way state is copied from one side to the other, subclasses of `UpdateValueStrategy` or `UpdateListStrategy` can be created.