Never specify project_name in keystone v3 auth

All of our middlewares populate the context with both the tenant name and the
tenant_id. The tenant_id, is unique across domains which means you can do lookups
without having to know what domain the project is in.

When project_id and project_name are both specified, it seems that project_name
takes precedence, which will fail when the credentials are from the stack domain since
we cannot lookup by project names when the domain is not specified.

It looks like specifying project_name is never the right thing to do, and we should
assume that the context always has a tenant_id.

Change-Id: Ifea21e13be482a6347438d6baaca3111caad4a97
Closes-Bug: #1290621
Catch NotFound exception on user delete_key

Deleting a key which doesn't exist shouldn't cause a failure. Catch
NotFound exceptions so delete can succeed in this case.

Change-Id: If651a2936862f8ed2168c2c216ef6df8e944d6ba
Closes-Bug: #1291060
Stack identity reads tenant from stack not context

This refactors the way stack identity reads tenant_id information so
that it uses the information already in the stack, instead of getting it
from the context every time.

This allows for unscoped list of stacks to show correct project
information (the project that each stack belongs to), instead of the
current one in the context.

Co-Authored-By: Richard Lee <rblee88@gmail.com>
Closes-Bug: 1294385
Change-Id: I976e7f7dea4432b97a2b97382bf05eb3bd1ca565
Merge "Never specify project_name in keystone v3 auth"
Merge "Catch NotFound exception on user delete_key"
Merge "Stack identity reads tenant from stack not context"