Parser: Disable attempts to declare a variant.

Variants are converted to enum class types pretty much everywhere in the
emitter. Parser shouldn't allow them to be declared, so that all variant
usages somehow end up into an enum class value.
Scoped variants! This turned out to not be so hard after all! Fixes #77.

An enum class now considers the variant members scoped if each entry starts
with a :: before the name. This is decided based on if the first name starts
with :: or it does not.

If the first name starts with ::, then each subsequent entry must start with
::.

I've decided on this syntax because I want it to be obvious when reading down
code that the enum is scoped (each entry has :: before it). I considered doing
:: after the class name (ex: enum class Option[A] :: { ... }). However, I
decided against this because I believe that's something that could easily be
missed when reading down code.

Scoping requires that each use of a variant has <option>:: before it. However,
this rule is not so when doing matching (because the names MUST apply to the
given enum class and not to something else. So requiring :: there would be
unnecessary).

Credit: This feature was inspired by reading about Rust doing the same thing.