Allow full specification of BlockDeviceMapping in constructor

Parameters for device_name and virtual_name existed but were being
silently dropped. New ebs parameter added.
Fix BlockDeviceMappings in launch configurations

The implementation was using build_list_params, which supports lists of
dicts and strings, while block device mappings are just objects.

Processing the mappings is now delegated to the objects themselves, which
get their own build_params functions.
Drop dict-based build_list_params implementation as it is not being used