Fix polymorphic variant destructive substitution
Fix polymorphic variant destructive substitution

Handle cases like:

    module type S =
      sig type a = [ `A ] type t = [ a | `B ] end
      with type a := [ `A ]

Signed-off-by: Jon Ludlam <44f878afe53efc66b76772bd845eb65944ed8232@recoil.org>

ocaml-doc/odoc,ocaml-doc/odoc