Improvements to Expected

Hi Jon,
 As discussed, I've made some 'improvements' (for some value of improvement) to `Expected`.

It's mostly around the handling of the lifetime of the objects in the `Data_` union, and a couple of assertions in the `as_unexpected` functions.

Cheers,
 Andy