Reviewer Rob - Contact filtering

This is the code for the contact filtering function.

I've UT'd everything but `filter_bindings_to_targets`, `binding_to_target` and `prune_targets` but the golden paths through them are already UTd by the existing UTs.  I'll add error paths while you review the rest.
Identifiers with double underscores are reserved to the implementation.