Add boost.fusion based structure i/o.

Based on this [blog post](https://rodgert.github.io/2014/09/09/type-driven-wire-protocols-with-boost-fusion-pt1/)