Anonymous enum types (A|B) take 2

I really liked this idea and have tried to address some of the concerns with it.

[rendered](https://github.com/scialex/rfcs/blob/anonymous-enums-2/text/0000-anonymous-enums.md)

[Previous discussion](https://github.com/rust-lang/rfcs/pull/402)

Thanks to @reem for making the original version of this.