CRM-14413 - Dedupe hooks to make custom rules manageable thru UI + a flip hook

The patch adds new calls to existing dedupe hooks, which helps make custom dedupe rules manageable through UI, and also be able to combine with other rule fields using threshold mechanism. The hooks are:

CRM_Utils_Hook::dupeQuery($ruleDao, 'dedupeIndexes', $tables);
// allows one to suppress / decide indexing for new custom rules.

CRM_Utils_Hook::dupeQuery(CRM_Core_DAO::$_nullObject, 'supportedFields', $fields);
// allows one to make custom rules populate in the list of core rule fields.

CRM_Utils_Hook::merge('flip', $dupes, $dupes['dstID'], $dupes['srcID']);
// allows one to implement complex biasing decisions on which contact to keep or merge into.

Can update docs when accepted.