refs #544 SERVER-5848 determine index suitability using a FieldRangeSet

Previously each special index type would determine the suitability
of the index by analyzing the original query.  To avoid re-parsing
the query for each index, we now pass in a FieldRangeSet, which is
a better representation of all the constraints implied by the query.

Conflicts:

	src/mongo/db/geo/2d.cpp
	src/mongo/db/geo/s2index.cpp
	src/mongo/db/hashindex.cpp
	src/mongo/db/hashindex.h
	src/mongo/db/indexkey.cpp
	src/mongo/db/indexkey.h
	src/mongo/db/queryoptimizer.cpp
refs #544 SERVER-5848 ammend c++ unit tests for new suitability method

Conflicts:

	src/mongo/dbtests/namespacetests.cpp
refs #544 SERVER-5848 further simplifications to default suitability() method

Conflicts:

	src/mongo/db/indexkey.cpp