New EnvUser

Add:
 - the EnvUser doc
 - support for setting the last login time for the EnvUser
 - factory methods for adding the envuser

Create the Admin EnvUser at bootstrap time.
Merge Trunk.
Download tools from API server

We will be eliminating the use of provider
storage for tools. This is a step in that
direction: hiding the use of provider storage
behind an HTTP API provided by the API server
for fetching tools. Later we will change the
backend to fetch the tools from GridFS, when
that work has been implemented.
environs/cloudinit: use aria2 to download tools from API servers

Now that we are serving tools in the API server, we must consider
the availability of the API server at the time a machine is
provisioned. The aria2 package is an alternative to curl that
is capable of failing over to additional sources and optionally
downloading chunks in parallel.

Note: curl can be built with support for Metalink, which would
have been a more conservative option. Unfortunately the version
of curl packaged in Ubuntu does not have Metalink support enabled.
provider/local: serialise tools in cloud-config

The local provider always has tools available
locally, and user-data for lxc and kvm does
not have the size limitations as in cloud providers.
Thus, we can safely serialise the tools tarball
into user-data in the local provider.
state/apiserver: fix sprintf, log errors

Log errors in sendError functions, and
change signature to not return error.
environs/cloudinit: retry tools download indefinitely
state/apiserver: use errors, fix sprintf
provider/local: disable prereq checking in tests

We have tests for prereq checking, we don't need
to do it everywhere.
This time for real
Merge pull request #553 from waigani/new_env_user

New EnvUser

Add:
 - the EnvUser doc
 - support for setting the last login time for the EnvUser
 - factory methods for adding the envuser

Create the Admin EnvUser at bootstrap time.
Merge pull request #608 from axw/cloudinit-download-tools-apiserver

Download tools from API server

We will be eliminating the use of provider storage for tools. This is a
step in that direction: hiding the use of provider storage behind an HTTP
API provided by the API server for fetching tools. Later we will change the
backend to fetch the tools from GridFS, when that work has been
implemented.

Now that we are serving tools in the API server, we must consider the
availability of the API server at the time a machine is provisioned. The
aria2 package is an alternative to curl that is capable of failing over to
additional sources and optionally downloading chunks in parallel.
Note: curl can be built with support for Metalink, which would have been a
more conservative option. Unfortunately the version of curl packaged in
Ubuntu does not have Metalink support enabled.

The local provider always has tools available locally, and user-data for
lxc and kvm does not have the size limitations as in cloud providers. Thus,
we can safely serialise the tools tarball into user-data in the local
provider.