Begin implementing abstract platform

Actually, I do believe it's not ambiguous. Streams are indeed technically bidirectional, but we always know in advance the side that leads and the other one just processes and responds (aka slave/master). So, given the render thread internals, ```client_in_stream``` uniquely identifies it as a stream with a client being master. At the same time ```device_to_stream``` clearly shows that we are the master on the stream to the device. It's just pure speculation, of course (don't want to block your changes going in), but please let me know what you think about this scheme.