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.
Should we have some of our usual "full-stack" tests in stateful_proxy.cpp as well? We'd probably struggle to prove prioritization (unless we could reduce MAX_FORKING to 1), but could at least verify that certain bindings were rejected correctly.