add ironfan components and plugins, bump to 5.0.0

Ironfan components provide functionality similar to Chef roles: they
provide a way to group recipes and attributes. Unlike roles, they live
entirely on the client side and can be parameterized. The following
example creates an nfs server component and then uses it in a cluster
definition. Note that components are Gorillib Builders, which allows
the 'foo' parameter to be passed in in this case.

    Ironfan::Plugin::Component.create(%w[nfs server]) do
      magic :foo, String

      def project(compute)
        compute.instances(1)
        compute.cloud(:ec2).security_group(:nfs_server).authorize_group :systemwide

	Chef::Log.info("was passed #{foo} by the cluster")

        compute.recipe 'nfs'
        compute.recipe 'nfs::server'
      end
    end

    Ironfan.cluster(:nfs) do
      facet(:server) do
        nfs_server{ foo 'foo string' }
      end
    end
adding 'cluster diff' knife plugin

usage:

    bundle exec knife cluster diff [target]

This command will display some basic differences between the current
configuration and what has made it to the remote side. It integrates
with components to help the user ensure that their component
configuration has made it to the Chef server.
fix for 'cluster list' and adding ability to use per-realm Gemfile

This brings in support for setting the Gemfile according to the
cluster or realm that is being operated on. When operating on the
prod_control cluster, for example, Ironfan will attempt to use the
Gemfile.prod gem file in the current directory. (This requires
shelling out again.) If the file does not exist, Ironfan simply
continues in whatever environment it's been launched in.
bumping rspec
adding 'environment from file' knife plugin

The 'environment from file' knife plugin uses declared cookbook
requirements from components to generate a Chef environment that
contains the result of merging all of these requirements.
rebuilding gemspec
additional regression tests for realms
fix for security group creation bug affecting vpc instances
small bug fixes for knife_common and ironfan/dsl
fixes for cluster diff

I ran into some trouble pulling down the launch description and
grabbing nodes when those weren't launched. For now, I'm going to stop
pulling in things from the launch description and make sure we handle
the case where the Chef node is empty.