Fix test name

Because this is a test of the `project()` method, 'project' should be
part of its name.
Add match() method to Pipeline

The `Pipeline.match()` method can be used to add a `$match` to a
pipeline. It's usage is similar to that of `Model.find()`. Field names
are specified as parameters, and `utils.map_fields()` will take care of
mapping aliases and structuring checks for nested fields.

Just as with `Pipeline.project()`, calls to `match()` can be chained.

References #22
Make match() always supported nested fields

The original implementation of `Pipeline.match()` only called
`utils.map_fields()` when a `Model` class was specified. This meant that
nested fields weren't properly being handled for instances of `Pipeline`
without a `Model` class.

By providing an empty dictionary to `map_fields()`, it can be called for
all `Pipeline` instances.

References #22
Add match() test for operators

This test is designed to make sure that `Pipeline.match()` properly
handles operators. `utils.map_fields()` actually does the work, but
failing to include `with_operators=True` would result in this not
working correctly.

References #22