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
juju-run: adding relation-id and remote-unit support
juju-run: adding and updating tests
juju-run: added --no-remote-unit for explicit executions against relations with no remote unit
juju-run: ParseRemoteUnit fixes and tests
juju-run: adding additional conditions to the parseRemoteUnit test, review updates
jujuc: make relation flags match juju-run
juju-run: updates based on peer review
extended jujuc / juju-run support the same argument flags
renamed --no-remote-unit to --skip-remote-unit-check
changed --relation-id to --relation, added parsing of string inputs
added more testing
juju-run: add --relation to jujuc relation commands
juju-run: assign result to satisfy the client.Call API
juju-run: updated to use errors package
juju-run: peer review updates and more tests
juju-run: ParseRemoteUnit ambiguous testing
juju-run: addressing peer reivew comments
juju-run: acquireLock later, refactor newRelationIdValue
juju-run: add missing relationId test for context factory
juju-run: improving ParseRemoteUnit checks and tests
juju-run: restore newRelationIdValue and rename ParseRemoteUnit to InferRemoteUnit
juju-run: updated InferRemoteUnit with tests
juju-run: added uniter test