Fix for cc_grub_dpkg ignoring /dev/xvda devices as candidates (LP: 1336855).
Upgrade configdrive version

- Upgrade configdrive to use 2013-10-17
- Fix issue with vendor_data.json parsing

Co-Authored-By: Paul Querna <pquerna@apache.org>
Add failback for older Openstack configdrive versions

- Also utilizing the constants defined in
  cloudinit/sources/helpers/openstack.py for configdrive versions
Refactor vendor_data handling

vendor_data is guaranteed to be a dict if it exists; if it doesn't
exist ensure it's represented by an empty dict to avoid checking
it to see if it's a dict.
Reduce logging levels and fix broken call to _fetch_available_versions
Fix a couple more cases of exceptional logs
Allow customized metadata leaf decoding
Update read_config_drive to use OS_VERSIONS tuple for readers

Updated read_config_drive: removed the unused version kwarg, used the
OS_VERSIONS tuple from the openstack helper to avoid hardcoding
versions.

Added a comment to the tuple in helpers/openstack.py asking for it to
be kept in chronological order.
merge from trunk
Only use vendordata under cloud-init key for ConfigDrive

This data will be treated the same as vendordata from other sources.
pyflakes fixes.

make pyflakes now passes.
merge from trunk
log as warn if things are obviously wrong

If something is broken as in a built in config, or code
just broken, then logging warning during search for metadata
is ok.
fix a bug, use a list instead of tuple for _versions

using tuple for _versions was just not necessary.
fix reference to undefined os_versions.
openstack: fix bug referencing undefined variable, revert some changes

I had leaked in a couple exception loud-ness changes previously.
This does fix one bug in that os_versions was not defined.
merge from trunk
make BaseReader select latest supported version
fix log message
drop version= from readers

instead of taking a version that they should look for,
the readers now just select the highest supported version.

definitely a use case later for having version= but nothing 
is using it now.
ConfigDrive: support reading vendor_data similar to OpenStack MD reader

This makes the DataSourceConfigDrive support vendor-data in the same
way the metadata service reader does.  There are still some things to
fix here, but now we're similar between these two.

Also drops the ability to specify a version (as in YYYY-MM-DD) that you want to
look for.  Nothing was using this, but it may be useful to add back in
in the future and expose as a datasource config option.