Add nested object support for quacksLike predicate

`quacksLike` did not support nested object. It now does for arbitrarily nested objects.