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.

**Note**: This PR contains changes strictly related to conversion to mongoengine. Getting rid of TaskStatusManager and moving all it's functionality to the TaskStatus model plus updating a ton of relevant unit tests is being handled in a separate branch remove-taskstatus-manager.
@skarmark I think it would be better to use get() in all places and catch the exception. I was testing this some and it raises a different exception for cases where a .get() call finds 0 versus when it finds 2 or more. See this snippet:

```
>>> # finds 0
>>> task = TaskStatus.objects.get(task_id='asdf')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/mongoengine/queryset.py", line 833, in get
pulp.server.db.model.dispatch.DoesNotExist: TaskStatus matching query does not exist.
>>> # finds exactly one
>>> task = TaskStatus.objects.get(task_id='befb093d-680c-40e5-a1f3-fd81a15b7027')
>>> print task
TaskStatus object
>>> # two or more case
>>> task = TaskStatus.objects.get(worker_name="reserved_resource_worker-0@dhcp129-138.rdu.redhat.com")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/mongoengine/queryset.py", line 841, in get
pulp.server.db.model.dispatch.MultipleObjectsReturned: 2 items returned, instead of 1
```

What I find interesting is that these exceptions are found in pulp.server.db.model.dispatch, but they aren't in the code there...