Advanced AMI block device mapping support

This commit would add in granular AMI device mapping support. It is backwards compatible with existing ami block device mapping options. This is currently in use spinning up SSD AMI's in combination with my previous pull request https://github.com/Netflix/aminator/pull/207

Allowing definition of a different root device with
```
--ami-root-device
```

Allowing granular definition of the AMI block device mapping with
```
--ami-block-device-map
```
I've written a (very) brief piece on the block device mapping support [here] (https://github.com/willtrking/aminator/wiki/Block-device-mapping-examples)

This is a fully featured example of creating a partitioned HVM AMI with a seperate root device and block device mapping with the ansible provisioner
```
aminate -e ec2_ansible_amzn -n TEST_APP_1 --ami-root-device '/dev/sda1' --ami-block-device-map '[["/dev/sda1",{"volume_type":"gp2","size":8}]]' --partition 1 --vm-type hvm -B my_private_ami app-webapp/development.yml --debug
```