Require rows passed to "loadAllFromArray()" have unique keys
Require rows passed to "loadAllFromArray()" have unique keys

Summary:
See PHI1809, which identified a bug in Project search where queries with a large number of slugs could paginate improperly.

This change detects problems in this category: cases where multiple rows with the same ID are passed to "loadAllFromArray()". It's likely that all cases it detects are cases where a GROUP BY is missing.

Since this might have some false positives or detect some things which aren't fundamentally problematic, I'm planning to hold it until the next release.

Test Plan:
  - Reverted D21399, then created a project with multiple slugs and queried for one of them via "project.search". Hit this new exeception.
  - Browsed around a bit, didn't immediately catch any collateral damage.

Differential Revision: https://secure.phabricator.com/D21400

MicroWorldwide/phabricator,freebsd/phabricator,freebsd/phabricator,wikimedia/phabricator,Khan/phabricator,MicroWorldwide/phabricator,phacility/phabricator,freebsd/phabricator,Khan/phabricator,MicroWorldwide/phabricator,Khan/phabricator,wikimedia/phabricator,wikimedia/phabricator,phacility/phabricator,MicroWorldwide/phabricator,Khan/phabricator,wikimedia/phabricator,phacility/phabricator,freebsd/phabricator,phacility/phabricator