Code Hygiene with discriminated unions

There was a lot of inconsistency with how discriminated unions were
declared in the code base.  I now enforce RequiresQualifiedAccess and
added a unit test to fill out the code coverage for equality functions