Isolate RleDecoder interface into its own header file

I noticed some conflation between the `RleDecoder` class declaration, the factory function `createRleDecoder()` that creates decoders for a given version, and the per-version implementation class (today, just `RleDecoderV1`). This proposal separates the three, so that clients of the codec don't need to know about the version-specific types.

All the files are still in the same directory (and mentioned in the same _CMakeLists.txt_ file), but you can imagine the implementations being built separately from the client code that uses them through their interface.