Implement `list` operation for instances

This provides a read-only view of instances -- globally or restricted to a
single zone.

It also includes human focused rendering support; part of this is wired in by
adding a custom `to_s` method to the "instance" instances returned by the
Google API.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement basic `create` operation for instances

This wires up enough logic to allow instances to be created by node_gce: while
slightly limited in capabilities, it is sufficient to create an instances from
a stock or custom image using non-persistent local disk.

There are limitations:
 * no persistent disk support is yet available
 * networking is hard-coded to the `default` network
 * networking is hard-coded to use an ephemeral external IP

For all that, it provides mediated instance creation.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement `delete` operation for instances

This completes the basic set of functionality available to GCE instances: we
can now delete them, removing the associated data and virtual machine.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement `user` action to manage ssh key metadata

The GCE supplied images allow use of "metadata" on the instance to manage user
accounts; the `sshKeys` field is used by on-node software supplied in the
Google instances to keep a set of user accounts and their SSH keys in sync.

This provides an interactive mechanism to manage that structured data, adding
and removing users and their keys from the list.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement SSH key / account support at create time

This adds a `--users` option to create, which will pre-set the `sshKeys`
metadata at creation time.  That ensures that by the time the VM is booted the
data is already available and SSH access should be entirely possible.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>