rewritten timekeeping routines for accuracy.

- timeline contains the precalculated timekeeping informations.
  subsequently `adjust_*` methods are now gone. (hurray!)
- timekeeping routine is now lag-resistant.
- `Pointer` interface is entirely redesigned for efficient use of
  revised timekeeping routine.
- reverse motion due to negative BPM now requires a special casing
  due to the algorithm change.
- measure bar past the end of the chart is not rendered now.