Changes block_device_mapping extension into v2.1

This patch changes v3 block_device_mapping API to v2.1 and make
unittest share between v2 and v2.1

The differences between v2 and v3 are described on the wiki page
https://wiki.openstack.org/wiki/NovaAPIv2tov3.

Partially implements blueprint v2-on-v3-api

Change-Id: I935b336523241a32dbd2bb8b154ce72afefd3aa9
Catch BDM related InvalidBDM exceptions for server create v2.1

For v2.1 api, we should catch exception explicitly. There are some
BDM related InvalidBDM* exceptions missing catch. This patch fix this.
Also move the related unittests into block_device_mapping unittests.

Change-Id: Id1bef4adc71ffedd52eb9278b5d09954fc1b1193
Add extension block_device_mapping_v1 for v2.1

In the beginning v3 didn't support legacy block_device_mapping request.
For v2.1, we want to keep back-compatibility with v2 api, so we need
add legacy block_device_mapping.

This patch add new extension block_device_mapping_v1 for v2.1. Also
share legacy block_device_mapping related unittests between v2 and v2.1.

Partially implements blueprint v2-on-v3-api

Change-Id: I841833d8fd0995ddf49febd9c1611cf711742f5a
Merge "Changes block_device_mapping extension into v2.1"
Merge "Catch BDM related InvalidBDM exceptions for server create v2.1"
Merge "Add extension block_device_mapping_v1 for v2.1"