Clean up

The reason 'mongo' is lowercase in reference to the shell is that it is
treated as a keyword rather than just part of the name.
Make QuerySet sorting lazy

The original implementation of `QuerySet.sort()` resulted in the
`sort()` method of the cursor being called immediately. In most cases
this behavior was okay. In this case of a model class that included the
`sort` meta option, this could lead to unwanted calls to `sort()`.
Consider the following:

    class SortedModel(Model):
        class Meta:
            sort = 'field1'

    qs = SortedModel.all().sort('field2')

In this example, the cursor's `sort()` method would have been called
once as part of `all()` and again as part of `sort()`, making the former
unnecessary.

A change is being introduced to store the sorting specification
internally to the `QuerySet` instance until data is actually retrieved
from the cursor. When the first document is loaded, the spec will be
passed to the cursor's `sort()` method and the internal value will be
cleared to prevent additional calls.

The unit tests are being updated to reflect this change. Originally they
checked how `sort()` was called. They now check how the spec is stored
and ensure that `sort()` isn't called at all. A new test is being added
to test `_fill_to()`'s interaction with `sort()`.

An integration test is also being added. With the amount of moving parts
involved in making sorting work, I want to have a check to ensure it's
all actually working correctly.

Closes #19