1124570 - Adds two-queue implementation for reserved resources

https://bugzilla.redhat.com/show_bug.cgi?id=1124570

This BZ implements this [design and TODO list](https://fedorahosted.org/pulp/wiki/TwoQueueReservedResourceDesign). Refer to that doc for more info on what is contained in this PR.
Originally I didn't have 'tags' as one of the fields that was set only on insert. It didn't seem right to do that, but there is one test error that caught my attention. If you remove 'tags' in both places in this file, and update the test that asserts it should be there accordingly, you're left with one test failing:

```
======================================================================
ERROR: Tests the aggregate call to update a repo and its plugins.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/mock.py", line 1201, in patched
    return func(*args, **keywargs)
  File "/home/bmbouter/Documents/pulp/server/test/unit/server/managers/repo/test_cud.py", line 494, in test_update_repo_and_plugins
    {'tags': 'pulp:repository_distributor:dist-1'})['task_id']
TypeError: 'NoneType' object has no attribute '__getitem__'
-------------------- >> begin captured logging << --------------------
pulp.plugins.loader.manager: INFO: Loaded plugin mock-importer for types: 
pulp.plugins.loader.manager: DEBUG: class: MockImporter; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-group-importer for types: 
pulp.plugins.loader.manager: DEBUG: class: MockGroupImporter; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-distributor for types: 
pulp.plugins.loader.manager: DEBUG: class: MockDistributor; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-distributor-2 for types: 
pulp.plugins.loader.manager: DEBUG: class: MockDistributor; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-group-distributor for types: 
pulp.plugins.loader.manager: DEBUG: class: MockGroupDistributor; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-group-distributor-2 for types: 
pulp.plugins.loader.manager: DEBUG: class: MockGroupDistributor; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-profiler for types: 
pulp.plugins.loader.manager: DEBUG: class: MockProfiler; config: {}
pulp.plugins.loader.manager: INFO: Loaded plugin mock-rpm-profiler for types: 
pulp.plugins.loader.manager: DEBUG: class: MockRpmProfiler; config: {}
pulp.server.async.tasks: DEBUG: Running task : [dd7a062f-0cff-4753-a5a7-783614933168]
pulp.server.async.tasks: DEBUG: Task successful : [dd7a062f-0cff-4753-a5a7-783614933168]
--------------------- >> end captured logging << ---------------------

----------------------------------------------------------------------
Ran 2872 tests in 74.368s
```

What is interesting is that the tag is properly set when the call is initially made and the task_status is saved, but then something comes along as the task runs and removes the tags, setting them to []. I never could figure out why, but if you have any insight I put together the example of just this test failing on the [bmbouter-1124570-tags-test-example branch](https://github.com/pulp/pulp/tree/bmbouter-1124570-tags-test-example).

This is the last issue that I think needs resolution before it's good to merge. Let me know if you have any insight into why this is failing.