Add /universe endpoint

:construction: 

This is a first stab at the `/universe` API endpoint.

The JSON output does not include the following keys from the Berkshelf API output: `location_path`, `location_type`, `endpoint_priority`.  I wasn't sure what these keys would correspond to inside Supermarket, or if we even need them now.  The rest of the JSON should match, format-wise.

I included some basic caching around the query itself, and the view.  Adding or deleting a cookbook will invalidate the query cache, and refreshing the query cache will invalidate the view cache.

I'm definitely interested in feedback here before saying this is ready to go.

/cc @bcobb @tristanoneil @brettchalupa 
Another thought - what if you use inject here instead of relying on ruby's Array->Hash magic. I bet that is taking up a ton of time and useless memory (you need multiple data structures). Something like:

```ruby
cookbooks.inject({}) do |hash, cookbook_version|
  hash[cookbook.name] = versions.blah
end
```