Add basic BDM format validation in the API layer

Adds the basic sanity checking for the new BDM data format when it's
passed in to the servers create method. Also make block_device routines
that raise IvalidBDMFormat error add a brief explanation to it that can
be reused to send more informative validation errors to the user.

More comprehensive validation that will take a look at the request as a
whole, and take into consideration all the metadata, will be done in
the compute API create method in the subsequent patches.

blueprint: improve-block-device-handling
Change-Id: Ie4c2c9a219be91faa07106f820a728ca9ac42e1b
Merge "Add basic BDM format validation in the API layer"