Define variants in a sub-namespace of their enum

[Rendered](https://github.com/sfackler/rfcs/blob/enum-namespace/active/0000-enum-namespacing.md)
Oh, wait, but if we have inherent members take priority over extension members, then the behavior of `Bar::Baz()` will change from calling `Foo::Baz` to instantiating the `Foo::Baz` variant, wouldn't it?