Add special handling for extracting explicit package name from rule name if being part of `go_package` (#2122)

**What type of PR is this?**

 Bug fix

**What package or component does this PR mostly affect?**

langugage/proto

**What does this PR do? Why is it needed?** 

`go_package` with explicit package name is discouraged but allowed.
Under default mode `go_package` has some special handling that extracts
the package name, e.g. for `example.com/protos/foo;package_name` it uses
`package_name` as base for RuleName.
In cases of other modes there is no special handling. `Package.RuleName`
containing `go_package` under `proto:package` mode was being directly
passed to the `RuleName` method to resolve the rule name.
Before my other change in #2105 the `RuleName` ignored all segments of
the input name seperated by non letter or digit characters, which by
pure luck also contained the `;` seperating import package from explicit
package name

The PR adds special case for extracting the explicit package name, as it
was done previously in the `RuleName` before #2105 while still allowing
to prevent duplicate rule names that could have originated after
trimming the parts of name.

Using explicit package name might under some circumstances lead to
duplicate rule names, but this technique is already discouraged and
users should be aware it can lead to problems.

**Which issues(s) does this PR fix?**

Fixes #2121

**Other notes for review**
5 files changed