Force-destroy machine if manual provisioning fails

If manual provisioning fails, we leave a machine
record in state that can only be removed with
"juju destroy-machine --force". We change the
manual provisioning code to call destroy the machine
with force if it fails.

(Partially) fixes https://bugs.launchpad.net/juju-core/+bug/1356886
provider/bootstrap: verify credentials early, provide user-friendly error message

Verify credentials early in the bootstrap process, and if authentication
fails, provide a user friendly error message. We also remove a redundant
error message from the bootstrap failure case.

This branch only addresses OpenStack; other providers will be addressed
separately.

Partially fixes https://bugs.launchpad.net/juju-core/+bug/1362072
provider/maas: verify credentials early in bootstrap

Verify credentials early in the bootstrap process by
issuing a query to MAAS and checking the status code
on the response (i.e. check if it's 401). Provide a
user-friendly error message, and log the underlying
error at debug level.

Partially fixes https://bugs.launchpad.net/juju-core/+bug/1362072
provider/openstack: only verify credentials in Prepare, not Open
Fix import grouping
Merge pull request #863 from axw/lp1356886-manual-fail-forcedestroy

Force-destroy machine if manual provisioning fails

If manual provisioning fails, we leave a machine
record in state that can only be removed with
"juju destroy-machine --force". We change the
manual provisioning code to call destroy the machine
with force if it fails.

(Partially) fixes https://bugs.launchpad.net/juju-core/+bug/1356886
Merge pull request #864 from axw/lp1362072-providers-verify-credentials

provider/openstack: verify credentials early, provide user-friendly error message

Verify credentials early in the bootstrap process, and if authentication
fails, provide a user friendly error message. We also remove a redundant
error message from the bootstrap failure case.

This branch only addresses OpenStack; other providers will be addressed
separately.

Partially fixes https://bugs.launchpad.net/juju-core/+bug/1362072
Merge pull request #865 from axw/lp1362072-provider-verify-credentials-maas

provider/maas: verify credentials early in bootstrap

Verify credentials early in the bootstrap process by
issuing a query to MAAS and checking the status code
on the response (i.e. check if it's 401). Provide a
user-friendly error message, and log the underlying
error at debug level.

Partially fixes https://bugs.launchpad.net/juju-core/+bug/1362072
action-fail: a jujuc command for Actions to set an error state

action-fail permits an Action to set an error value which will be returned to
the stateserver upon completion of the Action.  This does not prevent
action-set from adding more values to the results map.
action-fail: a jujuc command for Actions to set an error state

action-fail now uses the ActionFinish endpoint on State, so that any
values set in the action's result map will be handed back even in the
case of a failed Action.  The final call to action-fail will be the
message which is handed back along with the fail status.
action-fail: a jujuc command for Actions to set an error state

Final refactor of action-fail for action-set and actionFinish.
Merge pull request #868 from binary132/action-fail

jujuc action-fail

This is a re-open of https://github.com/juju/juju/pull/520 as the lander failed to see the script invocation.
Actions API documentation - WIP