Fix a bug rendering the total track length.

The "seconds" field was not displaying leading zeroes properly.
Update TODO.
Start adding support for multiple displays.

"display" is the abstraction that lets me have a normal playback
view, and separate overlays for things like volume level, seek
offset, playlist management and such.  These things are rendered
separately, and one of these displays is selected for display at any
given time.  This way, the user can be changing the volume during
playback and see the volume level overlay for a moment, and the
script can keep updating the track position in the background.

And while I'm in there, fix an off-by-one bug in the display
renderer code that did not allow the right-most column of pixels to
ever be used.
Add a "change volume" dialog.

This dialog pops up when you change the volume, showing the volume
number and a nice bar across the bottom.  The dialog lasts for 2
seconds, and then deselects itself (going back to the playback
display).

Split out the bar-rendering stuff from update_track_pos() into a
standalone function, use it for both the playback bar and the volume
bar.  Use common setup code for both of the display structures.