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

Add support for defining anonymous, enum-like types using `A | B`.