Make flavors is_public option actually work

When you create a flavor, you can set an is_public flag to be True or
False.  It is True by default.  When False, the intention is that the
flavor is only accessible by an admin, unless you use the flavor_access
API extension to grant access to specific tenants.

Unfortunately, the only place in the code where this was being enforced
was when listing flavors through the API.  It would filter out the
non-public ones for a non-admin.  Otherwise, the flavor was accessible.
You could get the details, and you could boot an instance with it, if
you figured out a valid flavor ID.

This patch adds enforcement down in the db layer.  It also fixes one
place in the API where the context wasn't passed down to enable the
enforcement to happen.

Fix bug 1194093.

(cherry picked from commit b65d506a5f9d9b2b20777a9aceb44a8ffed6a5de)

Conflicts:
	nova/api/openstack/compute/contrib/flavor_access.py
	nova/api/openstack/compute/contrib/flavormanage.py
	nova/api/openstack/compute/flavors.py
	nova/compute/api.py
	nova/db/sqlalchemy/api.py
	nova/tests/api/openstack/compute/contrib/test_flavor_access.py
	nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py
	nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
	nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py
	nova/tests/api/openstack/compute/contrib/test_flavor_swap.py
	nova/tests/api/openstack/compute/contrib/test_flavorextradata.py
	nova/tests/api/openstack/compute/test_flavors.py
	nova/tests/db/test_db_api.py

Change-Id: I5b37fa0bb19683fe1642fd81222547d4a317054e
Merge "Make flavors is_public option actually work" into stable/grizzly