Initial fixes for cross-regional support

This change has fixes for fetching of scoped and unscoped tokens
and for enumerating service endpoints.

When checking to see if a user has nova credentials, the code was
checking if the user had a scoped token for a project, but was also
checking without a project listed (which would check an unscoped
token). However, the code handled this poorly, which would sometimes
inject empty service catalogs into memcache. This change breaks this
into two calls: getProjectToken and getUnscopedToken.

Additionally, the way the code was previously getting endpoints was
leading to only a single region being discovered in the endpoints.
Rather than returning the first entry in the endpoints list, the code
now enumerates all of them. Also, getEndpoints now returns an array
of actual endpoints rather than an array of endpoint arrays, making
it easier to enumerate the endpoints.

Change-Id: If0f9d9416dea7bd20cd89d54e2096f943b1ab34d
Merge "Initial fixes for cross-regional support"