Avoid breaking bindings when deserializing ReactiveObjects.

Since changingSubject and changedSubject were being overwritten, if
you had any binding on the constructor it would just vanish into thin
air whenever your subclass of ReactiveObject was deserialized.

An workaround would be to setup all your bindings on a [OnDeserialized]
method, however that is subpar when your deserializer supports running
constructors since it will lead to harder to read code and will spend
time creating the bindings twice (which is not cheap!).

This commit will avoid recreating these attributes while still supporting
deserializers that do not call constructors.

See also:
<https://github.com/reactiveui/ReactiveUI/commit/980107f55cadac02e14e10bb1c94d9b6dc5f05b5#commitcomment-4697090>
Avoid an unnecessary Subject/Multicast.
Use IReactiveNotifyCollectionChanged if available.
Changed NLog registration to use full class name.  This makes filtering NLog on the ReactiveUI namespace possible.  Also added a log message when creating a ReactiveObject which includes the hash code to make tracing easier.
Merge pull request #412 from reactiveui/fix-reactiveobject-deserialization-issue

Avoid breaking bindings when deserializing ReactiveObjects
Merge pull request #417 from reactiveui/derived-colls

Small improvements to derived collections.
Merge remote-tracking branch 'origin/pr/419'

Conflicts:
	ReactiveUI/ReactiveObject.cs