git-phab-log: refactor, split main()

Test Plan:
try git-phab-log on existing repo
fixup! git-phab-log: new command for viewing git history
fixup! git-phab-log: new command for viewing git history
fixup! git-phab-log: new command for viewing git history
fixup! git-phab-log: new command for viewing git history
git-phab-log: filter if phab reviewed

Add the option to filter revisions by whether they went through a
Phabricator review or not.

Test Plan:
$ ./precommit.sh
my_repo/ $ git-phab-log --only-phab-reviewed
my_repo/ $ git-phab-log --no-phab-reviewed
my_repo/ $ git-phab-log
git-phab-log: filter by approvers

Add the option to filter revisions by the absence or presence of
particular approvers.

Test Plan:
$ ./precommit.sh
myrepo/ $ git-phab-log --approved-by-any-of user1 user2
myrepo/ $ git-phab-log --approved-by-none-of user1 user2
myrepo/ $ git-phab-log --approved-by-any-of user1
myrepo/ $ git-phab-log --approved-by-none-of user1
myrepo/ $ git-phab-log
git-phab-log: add trivial smoketest

Simple exercise the help option of git-phab-log as a minimal smoketest.

Test Plan:
$ ./smoke_tests.sh
git-phab-log: support pagers and other pipes

Prevent annoying exception output when simply exiting from pagers like
'less' or simply piping into 'head'.

Test Plan:
$ ./precommit.sh
myrepo/ $ git-phab-log | less