Add checks to Timestamp.AsString getter

Adds checks to Timestamp.AsString which will make sure modulus division
is only performed when needed. This prevents odd side effects from
occuring, such as returning the timestamp "00:-35791394:NaN", which it
was returning previously. Adds a validation check to the getter to make
sure that the timestamp will not be an erroneous one.
Fix getter of Timestamp.AsString property

Fixes the getter of Timestamp.AsString so that it uses int when
performing modulus division. Previously it used doubles, which in odd
cases would result in timestamps like "00:-35791394:NaN".
Add Caption Drawing check

Adds a check to Caption drawing so that captions both begin and end
offscreen are not drawn completely. This fixes a bug where having a
really long caption will mess up drawing.
Change Timestamp validation regex

Timestamp validation regex now will only accept proper timestamps,
meaning that there can not be more than 59 minutes or 59 seconds
displayed in a timestamp string.