fleetctl: add list-unit-files command

This is functionally equivalent to `fleetctl list-units --fields unit,hash,dstate' for now; it will start to make more sense as the registry API and `fleetctl list-units` receive their own changes.

Not really sure on good descriptions so open to suggestions.
Merge pull request #688 from jonboulle/list-unit-files

fleetctl: add list-unit-files command
registry: add UnitHash to published UnitStates

This introduces a new field in UnitStates containing the string
representing the Hash of the associated Unit, to disambiguate between
UnitStates published with the same name but actually representing
different Units.

To facilitate this, the UnitStateGenerator unfortunately needs to
maintain a synchronized map to track the hashes of the units to which it
is subscribed. (Ideally this would have remained in the Agent, but since
the Agent no longer has responsibility for publishing UnitStates, the
Hash needs to propagate to the UnitStatePublisher somehow.)
move unit hashes into systemd manager
actually delete from cache
fix getunitstate handling
fix returns
improve locking
fix comment