Improve handling of field exclusion.

Add a new `excludeId` parameter to `Project[Op]` and remove
`ExprOp.Exclude`, since `Exclude` has the opposite behavior of every
other expr and could only be used on `_id`.

Also

* group without “by” now uses `Bson.Null` instead of `Bson.Int32(1)`,
  since it’s what the docs recommend, and
* tighten up some integration tests that weren’t ignoring `_id` when
  they should have been.

There are a couple things here that aren’t ideal:

* `excludeId` is currently a boolean, which is bad enough, but we might
  actually need three values (an “I don’t care”, which let’s some other
  value dominate), and
* there is commented-out code for an `ExcludeOp`, which would require us
  using non-collection based requests in order to be useful.