Mongoengine taskstatus

This contains -

1. Schema definition for TaskStatus inherited from mongoengine.Document
2. Added fields.py to define custom fields used in pulp that are not available from mongoengine.
3. Updated save method on TaskStatus to do the validation of fields as well as upserts.
4. Updated task status manager with mongoengine queries
5. Added and updated unit tests in various files as appropriate.
6. Enabled a bunch of unit tests in test_dispatch.py which were not running because of wrong test names.

Since there are a lot of in-place changes, pull request diff looks confusing at some places. It is better to look at the whole file instead of the diff. 
There is very likely already a way to get the collection for any MongoEngine model built-in. We should try to find that and use it instead where/if necessary instead of making a PulpCollection thing here.

There are legitimate times/reasons to use pymongo directly even once we fully have MongoEngine (just like sometimes you write SQL statements directly when using an ORM). We should be careful about those times and use it sparingly, but we probably won't need it very much.