Clean up

The `Model.__init__()` method does not raise `ConnectionError`. The
exception will be raised when trying to interact with the `db` property
of a model's `_meta` attribute.
Initial commit of the aggregation module

The `aggregation` module is my proposed home for classes related to the
aggregation framework. It may replace `Model.aggregate()` or it may be
utilized by it, I'm not really sure of the end result.

The way I see the module working are that the `Pipeline` class will be
used to construct the pipeline to pass into the `aggregate()` method of
the collection in PyMongo. What is returned will be an instance of some
other class (`ResultSet`?) that will contain the results of the
aggregation query.

At this point all I have is the `project()` method to include and
exclude fields from the result. The `$project` operator is also capable
of renaming fields and constructing embedded fields. When adding that
functionality, I need to keep `field_map` in mind. Fortunately I can use
`$project`'s renaming ability to handle a lot of the work.

References #22
Simplify versioning

When a class is added and given a `versionadded` directive, methods
added as part of the same version don't really need the directive as
well. `versionadded` is being removed from `Pipeline.project()`. Any
other methods added to `Pipeline` under 0.7 will follow this trend as
well.

This is similar to dd0b54a.
Introduce field_map to aggregation

`Pipeline` needs to be aware of what model it is working with so that it
can properly handle that model's `field_map` setting. With this change,
the model can be provided to the `Pipeline` instance as part of its
initialization.

The `project()` method will handle performing the map directly through
the `$project` operator for included fields, and will exclude the
field's real name when for excluded fields.

References #22