fix(shards): guard against registering bad shard URIs

Whenever an admin would attempt to register a new shard, the shard was
admitted whether or not the shard URI actually existed, and whether or
not marconi could handle shards of that type.

This patch makes it so that a DataDriver instance is temporarily
instantiated prior to storing the shard entry. This instance uses
is_alive() to determine whether or not the shard can be reached/is
supported. This applies to both PUT/PATCH. HTTP 400 is returned if the
registration fails, as a result.

To enable this change, the ability to create a dynamic configuration
object was extracted from sharding.Catalog. Tests were written for
this new function.

The unit tests were updated accordingly, expanding the coverage of
test_shards to include the new failure cases.

Some changes needed to be made to handle new oslo.cache interface:
- cache.unset doesn't exist - now using cache.unset_many
- cache.get_cache() takes a URI, not a ConfigOpts

Change-Id: I40509f525466da01baad2a5aef81c7b99c8d2f97
Closes-Bug: #1258591
Closes-Bug: #1273376
Closes-Bug: #1273377
fix(wsgi): Cleanup limit config options

This patch contains several misc. changes to queue, message, and
claim limits to reduce confusion and bring the implementation in
line with the v1 spec.

1. Removed a couple of WSGI driver config options that are
no longer needed now that we have redefined (and simplified) how
we constrain message and metadata size.

    metadata_max_length = 65536
    content_max_length = 262144

2. Renamed options to be more readable and consistent
3. Moved options to [transport] section
4. Made max messages that can be claimed its own setting, to reduce confusion
5. Removed enforcing an upper limit on the number of messages that can be
posted; this was never in the spec, and appears to be gold-plating. Now, the
only upper limit is max_message_size.
6. Removed the check on the size of a create claim request since (1) it is
not part of the API spec, and (2) sanity-checks like that are best done by
the web server, before a request even touches the app.
7. Migrated limits for storage driver interface params to static values,
since those defaults define the static contract between transport and
storage drivers.
8. Wrapped validation error messages in gettextutils._, and converted them
to use .format instead of %.

Change-Id: I1372e5002f030f5c8c47774ab00ca8ee7e12232d
Closes-Bug: #1270260
Pecan initial files check in
Working version of Health endpoint with Pecan

After battling for a longtime with stevedore, pecan configs, routing,
misplaced root controllers, I now have a full working version of pecan
in the marconi framework.

Took me 6 hours to get here on a Saturday. I can’t believe Im not able
to focus at work to get this done. Im touching this code after 3 weeks.
Intermediate check in
Pecan madness
Merge branch 'Pecan' of https://github.com/balajiiyer/marconi into Pecan