Begin implementing abstract platform

I'm afraid to be lost in the client/server terms, since we have multiple layers. Do you think we can have more descriptive names for them? Something like ```device_in_stream```, ```device_to_stream```, etc. would certainly be straight up to get for me.