Why not simply return the negated Flags? Currently, this fails:
```D
MyFlags flags = ...;
flags = ~flags;
```
And no, I don't think we should add an `opAssign(Negation)`, because this would always fail too.
```D
MyFlags flags = ...;
auto nflags = ~flags;
static assert(typeof(nflags) == MyFlags));
```
The Negation type should be ditched algtogether I think.