(Clone Detection) 10-generate-inputs doesn't fail if called with only "--ngroups=0"
(Util) Easier way to print grammatically correct numbers

Old way:

  std::cout <<"array contains " <<array.size() <<" " <<(1==array.size()?"property":"properties") <<"\n";

New way:

  std::cout <<"array contains " <<plural(array.size(), "properties") <<"\n";

Output in both cases is either:

   array contains 0 properties
   array contains 1 property
   array contains 2 properties
(Clone Detection) Very minor tweak to a debugging message

This debugging message is not disabled because Andreas might
need to to see where 25-run tests has problems.
(Clone Detection) 2d worklist splitting; cache eviction

* The worklist for 32-func-similarity can be split into a quadtree
  by treating function IDs a 2-dimension coordinates.  Since the
  number of I/O operations in 32-func-similarity is a function of
  the number of distinct function IDs in the worklist

* Fixed a bug in how function output groups were cached which caused
  them to be read multiple times from the database in some situations.

* Implemented cache eviction.  The work list is analyzed up front
  so that output groups can be evicted optimally.
Merge branch 'clone-detection' into working

Conflicts:
	projects/BinaryCloneDetection/semantic/32-func-similarity.C