Alternate Content Sources

FYI: I plan to make a 2nd pass at the UG doc page this sprint as part of the nodes refit story.

The name ContentWarehouse metaphor comes from Data Warehousing in that it aggregates content sources.  But, I'm open to suggestions.

```
Name                                     Stmts   Miss  Cover   Missing
----------------------------------------------------------------------
pulp.server.content.sources                  3      0   100%   
pulp.server.content.sources.constants       23      0   100%   
pulp.server.content.sources.descriptor      36      0   100%   
pulp.server.content.sources.model          165      0   100%   
pulp.server.content.sources.warehouse      107      0   100%   
----------------------------------------------------------------------
TOTAL                                      334      0   100%   
----------------------------------------------------------------------
Ran 21 tests in 9.736s
```