Extend type directed completion to patterns
Rework type-directed completion

Factor out Variants and type-checking for values and constructors