get volumes with limit and filters does not work

The /volumes and /volumes/detail REST APIs support filtering. Currently,
all filtering is done after the volumes are retrieved from the database
in the API.get_all function in /cinder/volume/api.py. Therefore, the usage
combination of filters and limit will only work if all volumes matching
the filters are in the page of data being retrieved from the database.

For example, assume that all of the volumes with a name of "foo" would be
retrieved from the database starting at index 100 and that you query for
all volumes with a name of "foo" while specifying a limit of 50.  In this
case, the query would yield 0 results since the filter did not match any of
the first 50 entries retrieved from the database.

This patch removes all filtering from the volume API layer and moves it
into the DB layer.

Test cases were added to verify filtering at the DB level.

Change-Id: Ia084e1f4cf59ea39bf8a0a36686146a315168cbb
Closes-bug: 1287813
Merge "get volumes with limit and filters does not work"