Minimongo find/findOne support fields options.

First draft.
Check projection object.
Typos.
Simplest tests for minimongo fields.
Minimongo: preserve _id if not explicitly blacklisted.
Some weird nested key paths tests for minimongo.
More tests for minimongo.
Docs and typos in minimongo.
Fields filtering should happen *before* transformations.

Since 'fields' options relate to mongo 'find' query, i.e. raw data in mongo, it
has nothing to do with transformed data.
Fields projection in Cursor.observeChanges works.

Now 'changed' callback is not even called if change didn't affect the result of
projection.

Note: diff.js distinguishes changes only on one granularity level.

Ex.: You have object { foo: { bar: 1, baz: 2 }, qux: "something" }, and you
observe a cursor things.find({}, { fields: { 'foo.bar': 1 } }).

If 'foo.baz' changes, you still get notified as the whole 'foo' field was
changed. However, if you change 'qux' only, callback will not fire.
Fix failed test.
Adapted tests from observe ordered to test projection.

Also remove unnecessary filtering.
Comments, renames, error messages.

Added a big comment explaining why we throw an error whenever you pass ambiguous
rules to cursor's 'fields' option.
Fix comment.
Fetch, skip, limit, observe tests for fields option.
A slightly better comment on MongoDB edge-cases simulation.
Merge branch 'minimongo-fields' into devel

Support for 'fields' option in minimongo. Observe on the fields certain fields
will fire 'change' events only if one of watched fields changed.

Note: in minimongo observe, granularity of diff is one level. Meaning, watching
for changes at 'foo.bar' may fire even if 'foo.bar' didn't change.

Fixes #1287.