Release 2014.109
README.md: Update a bit
README.md: Add more docs
doc: More updates, note atomic status, flesh out tradeoffs
treepkgdiff: Don't create hawkey cache by default

Since we're only quering the database once (and at least
one of the locations is going to be read-only), don't
create the cache.

Noted while just reading the code while working on something else.
treecompose: Hoist rpmdb processing into function

In preparation for future work.
postprocess: Clean up rpmdb detritus

These lock and dbenv files are created by RPM when it accesses the
database read-write, but we only want read-only.  Sadly that turns out
to be very, very hard to plumb through all the layers in
hawkey/libsolv etc.

So let's just forcibily remove them after postprocessing.
treecompose: Replace shell callout for package caching with builtin C

This is taking us closer to deeper integration in the treecompose side
with RPM instead of forking out to things.

It works except...we end up with the dreaded __db.001, .dbenv.lock
files =/ Best option would be to teach RPM how to open a database
really read-only.  Failing that, could use the immutable bit?
compose: Protect the system during treecompose using container APIs

I was looking again at using hawkey/librepo, and realized just how
much I'd have to fight all of these libraries to avoid affecting
the running system.

What we really want to do with librepo/hawkey is run them effectively
unprivileged, and to hide the system's RPM database from them.  This
is a baby step towards that, by confining our existing yum.

- /usr, /etc, and /var/lib/rpm are mounted read-only
- yum is now run under CLONE_NEWPID, to avoid stray %post scripts
  affecting system processes
Cleanup by using libgsystem cleanup functions

For some reason we ended up defining our own macro to define cleanup
functions, when libgsystem has a usable one.  Switch to that, fewer
lines of code, more consistency.
Centralize cleanup function definitions

We might as well do what systemd does and have a big header which
defines all of them, to more conveniently share them for libraries
that don't include them (like hawkey/librepo, as well as things that
libgsystem doesn't yet cover).
Merge pull request #45 from cgwalters/cleanup-cleanup

Looks great.
doc: Restore treefile.md docs
doc/treefile.md: Document remove-files
compose: Rename _postprocess function to _prepare_rootfs_for_commit()

It's a lot clearer what we're doing.  This is preparation for further
work in cleaning up how we do content processing.
compose: Split out JSON helpers into separate file

In preparation for using some of them in the postprocessing code too.

Yeah, parsing JSON in C sucks =( Oh well.
compose: Move content processing code into -postprocess

It seems clearer to me if all code which is operating on the content
(such as enabling systemd units) is under -postprocess.  The "compose
tree" code should be tying everything together and calling out to
sub-components.

This is prep for adding more postprocessing code.
compose: Support 'install-langs'

This should exist for the same reason the yum and RPM options do; some
people want to construct more minimal systems.
compose: Support 'remove-from-packages' entry

This is the equivalent of the 'removefrom' verb in Lorax's templating.
It's a lot more robust than a generic "rm-rf" type thing, because most
often you only want to remove files from particular packages.
compose: Support 'postprocess-script'

This is obviously a total cop-out.  However, without glibc fixes, we
can't do better.  See:

https://bugzilla.redhat.com/show_bug.cgi?id=156477