Sync install_venv_common from oslo

Also grab a related doc reference while we're at it.

Change-Id: I2590970767f043f35a62a4dfa94be4ee86fbf138
Don't pass 'session' arg to public DB API methods

DB API is an abstraction layer, which is used to make it
possible to switch DB backends easily (though we've got only
SQLAlchemy backend at the moment).

Public methods of DB API should not accept any backend-specific
arguments (i. e. a Session instance, that is an SQLAlchemy entity
to work with DB transactions).

This patch removes 'session' argument from all DB API public methods
(except volume_data_get_for_project() and snapshot_data_get_fro_project(),
which are a bit tricky and will be fixed by another patch).

If a DB API method must be called by another one in the context of a started
transaction, a private method is used. It accepts the same arguments as the
corresponding public method plus one additional argument to pass the transactional
context (in case of SQLAlchemy backend it's a Session instance).

Blueprint: db-session-cleanup

Change-Id: Iabe7ea834ec07f6520614de2461b9ad1ab7a7ac2
Merge "Sync install_venv_common from oslo"
Merge "Don't pass 'session' arg to public DB API methods"