RFC: Anonymous enum types called joins, as `A | B`

Add support for defining anonymous, enum-like types using `A | B`.

[Rendered](https://github.com/reem/rfcs/blob/anonymous-enums/text/0000-anonymous-enums.md)
This is ambigous with bit-or, e.g. `x as u8 | y` could be `(x as u8) | y` or `x as (u8 | y)`.