Functional integration of DSE, policy, data sources

Previously, the integration of DSE, policy, and data sources
was incomplete and buggy.

This change completes and fixes that integration so that we now
have a test where the policy engine interoperates properly with
two (mocked and manually polled) data sources.  In this test,
we simulate the API sending a policy-update message to the policy
engine that mentions two data sources known to the policy engine
(two instances of Neutron).  The policy engine asks DSE to instantiate
drivers for those data sources, and when those datasources are polled
information is properly propagated to the policy engine.

Several changes were necessary (but too intertwined to separate out
into separate commits).

o  Datasources now publish the full contents of each table and
through a pre-publish hook in DSE send only deltas to the policy engine.
This was necessary to ensure that if the policy engine subscribes *after*
the datasource started polling, DSE would be able to send the full contents
of the table as a response to the subscribe message, using its usual mechanism.

o  The policy engine, upon receiving policy updates, ensures its
subscriptions to data sources are up to date (and spins up/down
drivers for data sources as required).

o  Data sources drivers now take an extra argument during initialization:
the python client they should be using.  This is useful for mocking
up data sources during testing.

o  The DSE now has a way to set default values
for arguments given to individual data sources upon creation.  This is
important so that when testing we can ensure those data sources are given
the appropriate mock clients even though the test does not itself directly
instantiate those data services.

o  The policy engine now supports an 'initialize()' routine that
resets the contents of given tables to given values.  Previously,
runtime only supported insert/delete.

o  The different theories now all support a content() function that
returns some combination of data and policy.  Previously, this functionality
was sometimes called contents() and sometimes content().

Change-Id: If89fe53d4dc7fde509f8e240a2b3ea20bc7f577d
Merge "Functional integration of DSE, policy, data sources"