Interfaced structs causes boxing, or oh bugger

So after my work on interfaced struct based monads it looks like it was all in vain, as soon as you reference a struct via its interface it is boxed turning it into a reference type anyway. With this boxing I lose he benefits of the struct based solutions so it is time to accept this and just convert to a class based solution.

At least I now see why so many libraries opt for the class based approach. Oh to have F# style discriminated unions in C#.