Add FactCursors and application fact datasources
Summary:
- Add PhabricatorApplication. This is a general class that I have grand designs for, but used here to allow applications to provide objects for analysis by the facts appliction.
- Add FactCursors, to keep track of where iterators are.
- Make the daemon do something sort of useful.
- Add bin/fact cursors for showing and managing objects and cursors.
- Add some options to bin/fact analyze.
Test Plan:
- bin/fact cursors, bin/fact cursors --reset DifferentialRevision, bin/fact cursors --reset X
- bin/fact analyze, bin/fact analyze --all, bin/fact analyze --iterator DifferentialRevision --skip-aggregates
- bin/phd debug fact
Reviewers: vrana, btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1562
Differential Revision: https://secure.phabricator.com/D3098