General tidy, unit testing

See individual comments for more details - just did a general tidy of stuff to make it a little more robust/Pythonic.

I might also suggest that you don't need to specify the track number on the lines like: `01|Track Name Here|00:00:00` in the file, as you can easily just process them in order. However, that would change the API of the program, so I haven't done that in this set of updates.