[aws|compute] Fixes schema in image tests

The schema for the AWS ImagesSet declared blockMappingDevice as an Array
with no values inside. Mocks are generating an image with a device
present which no longer fits the schema.

This is a premptive fix because corecting the #formats method caused this
issue to surface. See #1477
[openstack|identity] Marks test as pending

Issue #1477 conceals a bug in the #formats helper that allowed this to
pass such that the response of #delete_user_role does not match the
declared schema.

Response when mocked is an empty String which does not match the
declared schema of a Hash.
[aws] Fixes security group template

Security group ipRanges schema was declared as an empty Hash so only
matches empty hashes. Running with mocks gets unrecognised values which
when #formats is working correctly fails this test.

This is a premptive fix because corecting the #formats method caused this
issue to surface. See #1477
[tests] Updates format tests

Tests for #formats (the public interface) have been added however there
are no fail tests due to the way Shindo operates.

Adds a few more test cases and rewords the descriptions in preparation
to refactor the #format_kernels method.

Changes the tests and schema keys to be String based since decoding the
values rarely return Symbols.
[tests] Changes to format testing helper

* Adds and documents Shindo::Tests#data_matches_schema
* Deprecates Shindo::Tests#format method
* Strict mode is replace by expandable options
* Uses Fog::Logger instead of p for debug output
* Shindo::Tests#formats_kernel removed (was private)
* Shindo::Tests#confirm_data_matches_schema added
* #confirm_data_matches_schema uses yield

Related to issue #1477

Shindo::Tests#formats incorrectly treated missing keys as valid if their
value is allowed to be "nullable" or NilClass. These keys are not
optional. They are required but can be the value nil or the Nullable
class.

Unfortunately due to lack of documentation and a bug in the code the
current Nullable classes can be interpreted as optional and work as such.

This replaces the old format checker with a new version that supports
options to control the matching behaviour related to extra keys in
either the data or the schema.

This corrects the behaviour so extra keys in either the schema or the
supplied data fail the check unless non strict has been used.

A legacy version of the #formats test is in place that passes the
options so it behaves as the old version does.

Premptive patches have been added to fix those tests that were already
broken but passed the original checks.
[tests] Extracts schema validator to class

Created Fog::Schema::DataValidator to contain the matching logic for the
data based schemas used by the tests.

This is tested in isolation and removes dependency on Shindo. Also
exposes a #message call to get the last message set by the validator to
avoid coupling the test output to the internals.

Tests for the #data_matches_schema helper are added as well.
[tests] Fixes schema validator for arrays

Arrays should not fail if empty. They should only fail if any member of
the array does not match the schema.
Merge pull request #1490 from fog/1477_formats_nils

[tests] Changes to format testing helper
[rackspace|compute] fixing typo in metadata class
Merge branch 'master' of github.com:fog/fog into metafix