Move charm archive logic to API server

The client no longer determines the charm archive URL
from the current API server address, but instead queries
the API server for a list of URLs to attempt. The uniter
will try each URL until one works.

Fixes https://bugs.launchpad.net/juju-core/+bug/1394976
Bring in new juju testing.
Merge pull request #1212 from axw/lp1394976-api-uniter-charmarchiveurls

Move charm archive logic to API server

The client no longer determines the charm archive URL
from the current API server address, but instead queries
the API server for a list of URLs to attempt. The uniter
will try each URL until one works.

Fixes https://bugs.launchpad.net/juju-core/+bug/1394976

(Review request: http://reviews.vapour.ws/r/522/)
Replace the asserts.
Use jc.IsTrue and jc.IsFalse
Merge master.
Remove the import.
Merge pull request #1219 from howbazaar/jc-errorisnil

Update testing dependency and use jc.ErrorIsNil

Replaced all occurrences of
    c.Assert(err, gc.IsNil)
with
    c.Assert(err, jc.ErrorIsNil)

Also replaced `c.Check` variants.

While I was making such a massive change, I also changed:
     gc.Equals, true)
to
     jc.IsTrue)

and
    gc.Equals, false)
to
    jc.IsFalse)

(Review request: http://reviews.vapour.ws/r/528/)