move type coercion in BoolBinopNode chains from analyse_types() completely to coerce_to() as we may not know the final type that might support all operand types (usually boolean, but potentially user provided types)