feat(contrib/ec2): use separate volume for /var/lib/docker

We've seen fewer performance issues when machines use a separate
volume for /var/lib/docker. This commit changes the AWS provision
script to automatically prepare and mount a separate volume for
Docker.

We have to touch `/etc/docker-volume-formatted` because the
user-data is applied on every reboot, and we don't want
the Docker graph getting destroyed.

Note that we use the device name `/dev/xvdf` irrespective
of the instance virtualization type (PV or HVM). This seems to be
the way the kernel maps the block device, and isn't necessarily
unusual - see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html

Amazon documentation suggests using the letter 'f' as the first name
of a non-root EBS-backed device: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html

I manually tested this on both PV and HVM instances and had no issues.
There is no change in UX other than the new requirement of installing
the PyYAML Python library.
feat(contrib/ec2): use absolute path names for scripts

This enables users to run the AWS provision script from any directory.
Merge pull request #2803 from carmstrong/ec2-docker_volume

feat(contrib/ec2): use separate volume for /var/lib/docker