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.
As you say, TODO.