Make BDM dict __init__ behave more like a dict

Currently we can't pass values as kwargs to BlockDeviceDict classes.
This is a common way to call a dict constructor so it breaks the dict
abstraction a bit.

This patch fixes it in a backward compatible way.

Change-Id: I31117eecba4f060cb9c7fc3d329f70fd369b168d
VMware: Consolidate fake_session in test_(vm|ds)_util

Both test_vm_util and test_ds_util contained a fake_session class.
The implementation of test_ds_util.fake_session was irrelevant to
almost all of its users, which was confusing.

fake_session from these 2 modules is consolidated into fake. We now
have fake.FakeSession(), which expects _call_method and _wait_for_task
to be mocked, and fake.FakeObjectRetrievalSession(), which is a
utility object for faking the return of an object list.

The implementation details of test_ds_util.fake_session have been
pushed into test_file_exists and test_file_exists_fails, where they
belong.

Change-Id: I168af46d28629c8b2cf8adae856f0f66ae3ee922
libvirt: speed up _get_disk_over_committed_size_total method

Switch the _get_disk_over_committed_size_total method to
use the new list_instance_domains method.

Blueprint: libvirt-domain-listing-speedup
Change-Id: I4ef00ea5584eda14c4781d3fbf8bb737f3abdc90
Merge "Make BDM dict __init__ behave more like a dict"
Merge "VMware: Consolidate fake_session in test_(vm|ds)_util"
Merge "libvirt: speed up _get_disk_over_committed_size_total method"