addTimer is options-driven

callsite provides pass-through arguments
delay is provided as option, not positional argument
timer object is assembled in single expression
Rename `timeouts` property to `timers`
Refactor firstTimerInRange
Sort timers by multiple criteria, not just callAt
Add createdAt to timers
Sort immediate timers before non-immediate
Timer assembly occurs at addTimer callsites
Rely on `timer` initialization to null
Merge pull request #6 from duncanbeevers/set-immediate-precedence

Set immediate precedence