Add IOPlugin

I'm not convinced about encoding everything inside the uri string. I think we discussed it at some point and decided against it. Of course it is generic and you can pass as much information as you want, but it is more complex to use - needs proper encoding / decoding of the paramters, vs passing the parameter as the correct type direclty.