Documents keystone v3 API usage - part 1

docs/source/using-api.rst documents how to use the V2 API. This patch
starts the equivalent documentation (using-api-v3.rst) about how to
use Keystone v3 API. Introduction and Authentication sections have
been written.

Change-Id: I5a2d45d80ba712492717a75ac5901f5ca775daa4
Partial-Bug: #1260527
Sync strutils from oslo

Sync strutils from oslo which fix safe_encode under py3, this gets
keystone CLI to properly output results.

84d461 Fix a bug in safe_encode where it returns a bytes object in py3

Closes-Bug: 1260824
Change-Id: Idf0f3a51f5cfe3077395b53da66a12955449861f
Revert "Whitelist external netaddr requirement"

This reverts commit 01dc81aa148adaa127281f197047636cf2d2c898.

The netaddr package is now hosted on PyPI, so this workaround is
not needed anymore.

Change-Id: I76957aa5e276036921696f27e18efb5494b33120
Closes-Bug: #1266513
Controllable redirect handling

The requests library handles redirects as a browser would, which has the problem
that forwarding a POST will convert it to a GET. This is not necessarily
intuitive for an API. Handle all redirection manually and provide some
control over how far redirection can go.

Closes-Bug: 1267286
Change-Id: I24596a9c39cc29db28a66c3053ef3954b33abf90
Python 3: Use HTTPMessage.get() rather than HTTPMessage.getheader()

In Python 2, get() is a synonym for getheader(), which does not exist in Python
3.

Closes-Bug: #1267987
Change-Id: I6989a6ea733e0a186e9e68a61aaa8c3e43a198a6
Merge "Controllable redirect handling"
Merge "Documents keystone v3 API usage - part 1"
Merge "Sync strutils from oslo"
Merge "Revert "Whitelist external netaddr requirement""
Merge "Python 3: Use HTTPMessage.get() rather than HTTPMessage.getheader()"
Test commit