During symbol resolution, emit warnings for function signature
mismatches. During GC, if any mismatched symbol is marked as live
then generate an error.
This means that we only error out if the mismatch is written to the
final output. i.e. if we would generate an invalid wasm file.
It feels odd to me that we warn about a mismatch, and then later on error with the same message. Would feel more natural to only print the error, though it's probably useful enough to have the ">>> defind as" context that it's fine as-is.