Expected: Add destructor
Add 'Unexpected_T' ctor for Data_

- this allows us to be explicit about constructing the error
 member
Constructors - explicit about Data_ initiialisation

Expected(), Expected(Unexpected_T,E)
Add Expected_T and Data(Expected_T)
Expected/ctors - explicitly init Data_.t_
Add assertions to as_unexpected

This wants a better mechanism, but assert will do for now
Data_'s default ctor doesn't initilaise anything

- Expected's move ctor now placement initialises the members as
 appropriate
comment: a possibly spurious noexcept
nitpick: Mark inline functions as inline

make_expected, make_unexpected
Remove unnecessary std::move calls on return values
Expected: More comments
use ostringstream vs stringstream; don't call c_str()
Expected: cleanup trailing whitespace
.gitignore: add .gc{da,no}  (profiling files)