Add timings and tweak other things

This adds timings. I really like having timings for pushes since it
gives me a good idea how long things are taking relative to other
pushes. This is one way I debugged dennis linting for SUMO.

It's nice to have the main function return numbers rather than call
sys.exit() explicitly since it's easier to test. Having said that,
config is still calling sys.exit() and to change that requires some
plumbing changes that I think don't really help much.

r?