Separating 'connection' package

Holds State, RW and outer Encoder/Decoder. Passed to React() - to
replace RW, change State, etc.

* name is a subject to discuss and change
* pass Connection instead of State to IsRequiredFor() etc?
* RW exposure for assignment isn't good