Eliminated code copying between DefaultWatchHandler and RevitWatchHandler

@ikeough 

`RevitWatchHandler` now contains an instance of `DefaultWatchHandler`. If there doesn't exist a dynamic dispatch target for the object being handled by the `RevitWatchHandler`, then the `DefaultWatchHandler` is invoked.

This could be abstracted further to generically support composition of `IWatchHandlers`, but that can be implemented at a later time if necessary.