Align internal image API with volume and network

First part of standardizing the nova internal image API with the API
objects for volume and network. This patch creates a nova.image.api.API
object that matches the signature of nova.network.api.API and
nova.volume.cinder.API for CRUD operations on image records. The
existing unit tests were enough to fully cover the new code paths, since
much of this patch simply aligned the internal image API calls and API
object with that of the other submodules.

The next in this patch series will work on cleaning up the remainder of
places in nova that directly call on nova.image.glance methods, as well
as the untouched download/upload handling.

Change-Id: I67e7c9d841e5bad82cdca8f7048eaa57f0cfbb2f
Partially-implements: blueprint standardize-nova-image
Catch missing Glance image attrs with None

Glance is known to drop values from its response if they don't resolve to true.
 Previously in I67b7dd16a94fe60d873c012f6bd246ab24500d5a the None catch was
 removed as this WILL cause a call to glance for missing value and
 optimizations where made to attempt to pre-cache values that can be missing
 in expected ways. However there are still situations that can't be optimized.

Notably this can occur with disk_format, container_format, name, deleted,
 and checksum.

Test adapted from I85c42f8351763da201021a22f5ff0ebd62c6b2db by Mike Perez

Closes-bug #1308058
Co-Author: Mike Perez <thingee@gmail.com>

Change-Id: Icddead6f746d4d3ba652858eaae425acce8c177d
Merge "Align internal image API with volume and network"
Merge "Catch missing Glance image attrs with None"