Migrate stored credentials to keystone trusts

Migrate the stored user_creds, which currently only supports
storing username/password credentials to use the keystone v3
API OS-TRUST extension, which allows explicit impersonation of
users calling heat (trustors) by the heat service user (the
trustee)

Note this feature is made optional via a new config option,
defaulted to off, and it requires the following patches to
keystoneclient (in 0.3.2 release) and keystone to work:

https://review.openstack.org/#/c/39899/
https://review.openstack.org/#/c/42456/

Also note that if the feature is enabled, by setting
deferred_auth_method=trusts in heat.conf, you must add
a keystone_authtoken section, which is also used by the
keystoneclient auth_token middleware.

blueprint heat-trusts

Change-Id: I288114d827481bc0a24eba4556400d98b1a44c09
Change _testnoexisthost_ references in tests

These dummy urls are obviously invalid, but could potentially trigger
unexpected failures due to the underscores.

Instead use RFC2606's recommended test TLD of '.test' ensures
that these will never resolve.

Change-Id: I2723b18ef3eba81ee8c8a22d866ceb79c00aad75
Create a Stack.update_task() method

This will allow nested stack resources to run updates in parallel with
other resources.

Change-Id: I184666182f5b9648d2d297d4290eb8608a09c0f0
Fix problem with mocking tasks

It was previously impossible to stub out a task with mox, because when the
TaskRunner attempted to get the __name__ attribute it prompted an assertion
in the mock. Using hasattr() instead of getattr() eliminates this issue.

Change-Id: I3757a77daf59cbb3c0a8b60329d490a89e7ec1d3
Merge "Migrate stored credentials to keystone trusts"
Merge "Change _testnoexisthost_ references in tests"
Merge "Create a Stack.update_task() method"
Merge "Fix problem with mocking tasks"