Switching to `Allele`.

Renaming `Variant` back to WIP name of `Allele`, which we decided on the call today was better.
Changing the 'monoallelic' model to just 'allelic'.
Adding `Allele`s that are sets of `Allele`s.

Now to make a `Call` on several `Allele`s being present or absent you define a new `Allele` for that set, instead of just making a `Call` that spans `Allele`s.
Adding `Variant`s and `VariantConstriant`s.

I'm adding a `Variant` type, found in its natural habitat of a `VariantSet`, which encodes a set of alleles on which one wants to make mutually exclusive calls (as in VCF).

I'm also adding a `VariantConstraint`, which exists at the intersection of a `Variant` and a `CallSet`. It holds the bits of the current API's `Call` that didn't make it into the new `Call` (i.e. genotypeLikelihood) and allows you to say that, while you've assigned likelihoods to your `Call`s that theoretically could admit a `CallSet` being some strange ploidy, the actual total ploidy of the `Call`s on `Allele`s of that `Variant` in that `CallSet` is, say, diploid, with some joint likelihood distribution over the various diploid genotypes.
Changing available search options.

Now it is possible to look up `Variant`s by `Alele`s they use.

I've also defined "simple" and "composite" `Allele`s for those that are defined as `Path`s versus those that are defined as sets of other "child" `Allele`s, and specified when composite `Allele`s ought to match a search.