Handle cases of inherited interfaces better in registration
Handle cases of inherited interfaces better in registration

The order of the interfaces in the list of interfaces on a type is not guaranteed so some logic is needed to find the correct interface to register an implementation for.

couchbase/couchbase-lite-net,couchbase/couchbase-lite-net,couchbase/couchbase-lite-net