[EventLoop] Add a timer interface and class.

They will be used to provide a much nicer abstraction for timers shared
among the various event loop implementations.
[EventLoop] Reimplement timers for StreamSelectLoop.
[EventLoop] Reimplement timers for LibEventLoop.
[EventLoop] Reimplement timers for LibEvLoop.
[EventLoop] Add typehint in loop interface for timer cancelling.
[EventLoop] Update tests.
[EventLoop] Add a method to check the status of a timer.
Update examples after BC breaks in EventLoop timers.
[Dns] Update after BC breaks in EventLoop timers.
[EventLoop] Apply changes after code review.

Also removed a couple of unneeded use directives.
Merge remote-tracking branch 'nrk/loop-timers-abstraction' into 0.3

* nrk/loop-timers-abstraction:
  [EventLoop] Apply changes after code review.
  [Dns] Update after BC breaks in EventLoop timers.
  Update examples after BC breaks in EventLoop timers.
  [EventLoop] Add a method to check the status of a timer.
  [EventLoop] Update tests.
  [EventLoop] Add typehint in loop interface for timer cancelling.
  [EventLoop] Reimplement timers for LibEvLoop.
  [EventLoop] Reimplement timers for LibEventLoop.
  [EventLoop] Reimplement timers for StreamSelectLoop.
  [EventLoop] Add a timer interface and class.
Add new timers API to CHANGELOG
Document 0.3 API breaks in an UPGRADE file