(CFACT-124) Refactor identity resolver into a sharable base.

Refactoring identity resolver into a shared base implementation.  The
base implementation is responsible for adding the facts (single
definition) while the child types are responsible for collecting the
data.