Its default size of 18 with a thumb size of 8 can't be laid out to device pixels with a scaling of 1.5x. Previously, the thumb had more space on the right than the left, with this change it had more space on the left than the right. For some reason though it was more noticably offset with the space on the left. We may need to change the default sizes for `ScrollBar`.
`_subscription` was being used twice: for the subscription from the `PropertySetterBindingInstance` to the control (line 69) and from the subscription to the source binding to the `PropertySetterBindingInstance` (line 151).
Instead of each control listening to its parent `ResourcesChanged` event, use the logical tree to propagate `ResourcesChanged` events:
- When attaching to the logical tree, piggyback on the `AttachedToLogicalTree` traversal
- At other times, propagate by calling `NotifyResourcesChanged`
Split resource nodes into two types:
- `IResourceHost` represents controls and `Application`
- `IResourceProvider` represents resource dictionaries and styles, these are owned by `IResourceHost`s
Dynamic resources are now always resolved from an `IResourceHost`: if an `IResourceProvider` doesn't have a host then a dynamic resource in the resource provider will not be resolved. Resource providers no longer have a `ResourcesChanged` event, instead they notify their `IResourceHost` owner of a resource change by calling the `NotifyHostedResourcesChanged` method.