Add error message for anonymous impl for types not declared in the current module

Followup to RFC 57.

Fixes #7607
Fixes #8767
Fixes #12729
Fixes #15060
Right now the import error is hit first "import conflicts with existing symbol", which I override by checking that the conflict is actually with an `impl`. I think if I just suppress the error in this case, it should give the correct error later on when it tries to resolve the `impl` and sees there is no struct. But then if there <i>is</i> a struct, so the impl "succeeds" I'm not sure what would happen.