[WFCORE-60] Support multiple registration points for the same capability...

... or requirement

Ease of use thing for cases where the add/remove handler for a type=* resource is the logical place to register/deregister a capability or requirement. We allow multiple registration points to account for the fact that the handler may be executed multiple times for different concrete addresses. Otherwise the subsystem author needs to track how many registration points exist and only register once and only deregister when the last registration point is removed.
Java 7 gives us java.util.Objects.equals() so you don't need to roll safeEquals.  I keep forgetting about it though :)