Make `FlagAssignment` an opaque `newtype`
This is a refactoring abstracting `FlagAssignment` while retaining its external appearance as much as possible (i.e. same Read/Show/Binary instances etc). Later we can attach new instances, enforce internal invariants (like e.g. uniqueness of flagnames), switch out the internal representation (maybe to `Data.Map`), etc more easily.
Showing with 183 additions and 80 deletions