Re-implement type matching logic to reject ambigious conversions
Re-implement type matching logic to reject ambigious conversions

* Check for direct type match
* Check for conversions but only accept if one match

daniel-j-h/variant,daniel-j-h/variant,daniel-j-h/variant