Fix Timeline.playheadBarTimes

SetPlayheadBarTimes correctly and dynamically sets the playheadBarTimes
depending on how many are needed and what the current LeftBoundTime is.
Change Timeline.SetPlayheadTimes invokation

SetPlayheadTimes is no longer called from the OnPaint method, and is
instead called in the same places the BoundTimes are set.
Refactor CalculatePixelsPerSecond

Changes name to SetPixelsPerSecond.

Calls the method from the Zoom methods, so that the property changes
when zoomed in or out.
Refactor SetPixelsPerSecond

Moves the AvailableWidth calculation out of SetPixelsPerSecond and into
its own method. Calls SetAvailableWidth from SetScrollBarValues.
Refactor SetPlayheadBarTimes
Change call order of SetPixelsPerSecond

Method is now called before SetBoundTimes.
New method: SetTimelineValues

Refactors code so that the same series of methods is called from one
method, SetTimelineValues.
Fix Bug in SetPlayheadBarTimes

Fixes bug in SetPlayheadBarTimes where basetime is rounded too much due
to conversion to integer.
Add YCoordinateToScreenLocation

Converts a Y Coordinate into a Caption location based on its position
in the Timeline.
Refactor Timestamp.AsString

Removes timestampStringGenerated bool. Adds ResetTimestampString
method. Refactor documentation and other code.