Default empty OstreeRemotes or OstreeCore

If they are not specified via args, make the default
an empty inst of the containers instead of None.
When persisting a OstreeCore copy all items.

OstreeCore is just a dict, and we currently don't
need to know any of it's keys or values, so when
we update or add it to the confif file, just
add all of it key=value into the section.
Test cases for OstreeConfig and ..RepoFileWriter
Remove per class repo_file_store_class

Class can be extend with self_init_store()
Add more tests.

Start testing ostree action_invoker, and rest of
classes in model and config.

Tests are skeletons at the moment, and do little
validation other than 'didnt throw an exception'
Remove inj from 'api' module.

Content plugins that need entitlement info to
find Content info now should use an EntitlementSource
available on the ContentUpdateConduit as the
'ent_source' attribute.

EntitlementSource is just an iterable of Entitlements
(currently, that means the same thing as a
list_valid() on the injected ENT_DIR).

Plugins can currently assume that each item in
conduit.ent_source iterable with have a
'content' attribute that will be a list of
objects that looks like rhsm.certificate.Content

The current only implementation of EntitlementSource
is EntitltementDirEntitlementSource, based on the
inj'ed ENT_DIR.

Note the list of entitlements are calculated before
running any of the content update plugins, and does
not reflect if it changes as side effect of the
plugin hooks.

plugin/ostree/* no longer references api module
directly.
Merge remote-tracking branch 'origin/alikins/ostree' into dgoodwin/ostree
Add some missing copyright notices.
Move gi introspection code to separate script.

We can't load pygobject2 code as well as pygobject3. Instead we'll move this to
a separate script and shell out to get the string we need.
OSTree package depends on pygobject3-base.
Test subprocess error calling pygobject3 script, log output.