Improved Test Coverage for InclusionResolvers
Assigning a value via DiffNode now creates missing parent objects

As it turns out, the DiffNode#canonicalSet method always expected all
parent objects of the node to already exist in the target object, in
order to assign the value. If those objects were missing, it simply
didn't do anything.

The problem has been fixed by allowing certain DiffNodes to create
instances of their respective object types. By default this happens by
invoking the types public non-arg constructor. If this fails, an
exception will be thrown. To add support for other types, I added a
mechanism to provide a custom InstanceFactory, which can be used to
add support for types, that don't qualify for the dafault behavior.

[Fixes #115]