Make llvm::Timer reusable by allowing it to be started + stopped repeatedly.
This gets rid of an awkward static variable (ActiveTimers) and makes the API more flexible. It also adds a unittest, which I can extend in a later patch.
Rationale: In my use case, I have a long-running tool which periodically calls into llvm. I need to time a few regions multiple times. It makes life much easier to use a single Timer for this.
This patch also cleans up some documentation -- that will go in a separate NFC commit.