Implement file manifests

File manifests specify a list of files to be grabbed from S3 and
deployed in the instance. This is made available through the 'manifest'
keyword, which acts as a proxy for 'user-data', much like the 'puppet'
field.

The directory for puppet "manifests" was renamed to avoid confusion with
the file manifests now introduced.
Fix updating existing roles
Reimplement boto.utils.fetch_file

Going this route, a single connection can be shared across all
downloads. More importantly, the number of roundtrips is reduced to 1/3,
as fetch_file would do an initial GET to validate the bucket, then a
HEAD to validate the key and finally a GET to grab its contents.

This also ensures s3:GetObject is the only action that the script
requires permission for.
Fix handling of symbolic links in manifests

Attempting to create links would raise an exception, as we'd start by
creating a file in its place.
lchmod is not available on Linux, it's also not needed

Symbolic links get a default set of permissions where lchmod is missing,
where it exists only a selected values are meaningful.

Revert to plain chmod and skip it on symbolic links, so we don't
inadvertently change other files' permissions.
Fix imports in manifest handler