1. Fixed some tests to expect `BindingNotification`s to be returned on a broken binding chain.
2. Changed logging of `BindingNotification`s - log at `Warning` level (instead of `Error`) except when the binding chain is broken at the root, in which case log at `Information` level. Do this to prevent flooding the output window when initializing.
Make `SolidColorBrush` immutable, but make the static `Brushes`
properties return immutable brushes. The immutable brushes will be
needed by the deferred renderer.
`SolidColorBrush` is now mutable. There are immutable versions of
brushes in the `Avalona.Media.Immutable` namespace and the static
`Brushes.Xxx` properties return these.
- Don't log an error when the target for the root ExpressionNode is
null. This is usually because the `DataContext` hasn't been set up yet
and it spewed a load of useless error messages.
- Add a Description field to `ExpressionObserver` that can be used in
the case of e.g. #control bindings to record the whole expression (with
the "#control" part) rather than just the part tracked by the
`ExpressionObserver`.