Get rid of startInstanceParams.
Split NewMachineConfig into a bootstrap form and a non-bootstrap form.
Review change: rename mcfg to machineConfig.
Merge trunk, resolve conflicts.
UserData is CustomData now, it seems.
Tarmac builder doesn't seem to have that version of gwacl yet.
[r=jtv] Drop startInstanceParams.

This is not meant to be an ideal state for the code. It is however one
important step in a longer refactoring. The EC2 and OpenStack providers
define Parameter Object struct types called startInstanceParams, but it's
largely redundant with cloudinit.MachineConfig. This branch drops the
startInstanceParams structs. At a later stage we may go back to having a
Parameter Object here, but taylored to the new situation.

What the change does for us is bring us yet a step closer to uniformity for
the Bootstrap, StartInstance, and internalStartInstance methods as they are
written in the EC2, OpenStack, MAAS, and Azure providers. You will see some
code duplication crop up here, but in a next step I hope to sweep that all
together again into reusable functions. At that point, Bootstrap should be
able to use the StartInstance method as exported on the interface.

Part of the duplication is MachineConfig construction. What becomes apparent
in this branch is that calls to NewMachineConfig take two forms: one for
bootstrap instances and one for regular instances. So in a next step I'm
hoping to have two constructors for those two use-cases, and no more setting
of attributes right after construction.

Something I still need to look into closer is the withPublicIP parameter to
the OpenStack provider's internalStartInstance. This triggers two pieces of
code, but only in the case where it's Bootstrap calling the method, that look
as if they could just as easily be hoisted up into Bootstrap. That would
leave the internalStartInstance methods much more uniform between the
providers, and ready to take on the role of the exported StartInstance method.
Merge trunk, resolve conflicts.
Drop bootstrapNonce parameter to NewBootstrapMachineConfig, add stateFileURL.
[r=jtv] Specialise the MachineConfig constructor.

This is part of a larger, ongoing refactoring. The changes have now brought
out exactly 2 forms for the construction of a cloudinit.MachineConfig: one
form for bootstrap instances, and one for regular instances.

As you guessed, this branch creates a separate constructor for the bootstrap
case. This removes a bit of ugliness where the bootstrap case passes nils,
and then sets an additional field after construction. The non-bootstrap calls
stay as they are.

This branch is not quite complete. I have another branch in review that makes
the EC2 and OpenStack providers construct MachineConfigs in the same way as
the MAAS and Azure providers do. Once that lands, I can update this branch to
update those calls as well; or if this branch lands first, I can then update
the other branch.