Add open-ports to unit status

e.g.:
      mongodb/0:
        agent-state: error
        agent-state-info: 'hook failed: "start"'
        agent-version: 1.11.0
        machine: "1"
        open-ports:
        - tcp:27017
        - tcp:27019
        - tcp:27021
        - tcp:28017
Azure machine-type selection.
Select machine type.
Hack around the problem of the OS disk's size.
Prefix gocheck.
Fix prefixes.
Not debugging any more.
[r=thumper] Remove debugging code.

Slipped through the initial review.

https://codereview.appspot.com/11748043/
[r=thumper] Trivial import testing prefix.

gc and jc prefix for imports.

https://codereview.appspot.com/11745043/
Change instance.Port.String to format as number/protocol

Now juju status will report open-ports the same as in pyjuju.
Cosmetic review changes.
Review changes to error strings.
gc prefix for agent
Update marshal_test
Review change: remove the hack to disable ExtraSmall.  According to Julian, the image does work with ExtraSmall.
gc prefix for storage_test
[r=axwalk],[bug=1173093] Add open-ports to unit status

Also, update instance.Port's String method to
format as number/protocol, so we get the same
format as in pyjuju.

e.g.:
        mongodb/0:
          agent-state: error
          agent-state-info: 'hook failed: "start"'
          agent-version: 1.11.0
          machine: "1"
          open-ports:
          - 27017/tcp
          - 27019/tcp
          - 27021/tcp
          - 28017/tcp

https://codereview.appspot.com/11679044/
allow config to force an image name
[r=jtv] Select instance type on Azure.

Selecting an instance type on Azure is very simple: regions don't come into
it, and there are few enough types that you can just pick the cheapest type
that matches technical requirements and always know you got the best possible
fit.

Nevertheless Azure has some mismatches with Juju's selection logic. Disk
sizes come into play, which aren't currently modeled in constraints.  We're not
even really sure yet what Azure's documented limitations on OS disk size mean.
The image we use is 30 GB (OS images dictate OS disk size in Azure) and the
ExtraSmall machine type is documented as having 19 or 20 GB of OS disk space,
yet Julian has tried deploying that combination, and succeeded.

Juju's constraints model does allow for coupling between images and instance
types. But since we don't have image selection at all yet, for now I found it
much easier to implement instance-type selection than to fit in with the
existing code for this. We'll have to re-think this after a good look at
simplestreams.
[r=julian-edwards] Allow config to override the OS image used for Azure instances.

Useful long term but required right now because simplestreams is not hooked in and there is only one alpha image for saucy that can be used which supports the right cloud-init.