SERVER-785 Partial indexes

This commit adds partial indexes to mongo. It's based on https://github.com/mongodb/mongo/pull/41, but adding needed code to queryoptimizer.cpp in order to make use of the index when searching with the filter passed to the index and the indexed field. It also support some inequality implications (like partial indexes in postgresql, for example "x < 1" implies "x < 2").

The filter criteria for the partial index is passed using the key 'filter'.
Example: f.ensureIndex( { a: 1 }, { filter : {x: 6, y: {$gt:0}}} );
(see more example in the test file jstests/index_partial.js)

Given that it's my first attempt with the mongodb base code, it would be great have some feedback about this commit from people more familiar with the data structures. I would like to know if the code could be improved in terms of performance (or code cleanness).

Cheers,
Jorge

Note: It does not support multikeys for now. I'll take a look in the future.