Add CloudFormation support via Troposphere

This changeset adds support for Amazon Web Services CloudFormation via
Troposphere, a Python library for describing CloudFormation stacks.

There are currently 4 stacks:

- VPC

The VPC consists of 4 subnets, 2 public and 2 private. The subnets are
spread across 2 availability zones. There is a NAT instance for each
availability zone, and one bastion instance for the entire VPC.

- Data store (contains database and cache)

The data stores consist of a PostgreSQL RDS instance setup across
multiple availability zones and a Redis ElastiCache instance. The RDS
instance creates a default database (`nyc_trees`) automatically. The
ElastiCache Redis instance has AOF enabled. Both live inside the private
subnets.

- App servers

The application servers live within a vanilla Auto Scaling Group (ASG)
that is associated with an Elastic Load Balancer (ELB). Health checks
run by the ELB trigger changes in the ASG. All application servers live
inside the private subnets, but are fronted by their own ELB.

- Tile servers

The tile servers live within a vanilla Auto Scaling Group (ASG) that is
associated with an Elastic Load Balancer (ELB) as well. Health checks
run by the ELB trigger changes in the ASG. All tile servers live inside
the public private, but are fronted by their own ELB.

Additional AWS deployment details are housed in the `README`.

Resolves #24.
Add test provisioning path

This changeset introduces an alternate provisioning path for testing
environments. The majority of the differences in a test provisioning
path are associated with the omission of monitoring (Collectd, RELP,
Logstash). There is a new `nyc-trees.monitoring` role that attempts to
encapsulate monitoring tasks associated with a metrics/logs producer.

The environmental variable `VAGRANT_ENV` is used to determine which
provisioning path is taken. Inside of Jenkins, `VAGRANT_ENV` will be set
to `TEST`, which will adjust the Ansible inventory used.