Major API revision

Working towards improving support for multiple formats.
Much code from CaptionRenderer will probably end up in individual codecs
in here.