Decoders are now created with a static factory function, without a
separate open call. This allows autodetecting the decoder type later and
simplifies resource management.
The Ogg specific stuff was also hidden behind a private pointer to further
improve encapsulation and reduce namespace pollution.