net/http: avoid deferred unlock in ServeMux.shouldRedirect
net/http: avoid deferred unlock in ServeMux.shouldRedirect

CL 96575 introduced concurrency protection for
ServeMux.shouldRedirect with a read lock and deferred unlock.
However, the change produced a noticeable regression.
Instead add the suffix "RLocked" to the function name to
declare that we should hold the read lock as a pre-requisite
before calling it, hence avoiding the defer altogether.

Benchmarks:
name                  old time/op    new time/op    delta
ServeMux-8              63.3µs ± 0%    54.6µs ± 0%  -13.74%  (p=0.000 n=9+9)
ServeMux_SkipServe-8    41.4µs ± 2%    32.7µs ± 1%  -21.05%  (p=0.000 n=10+10)

name                  old alloc/op   new alloc/op   delta
ServeMux-8              17.3kB ± 0%    17.3kB ± 0%     ~     (all equal)
ServeMux_SkipServe-8     0.00B          0.00B          ~     (all equal)

name                  old allocs/op  new allocs/op  delta
ServeMux-8                 360 ± 0%       360 ± 0%     ~     (all equal)
ServeMux_SkipServe-8      0.00           0.00          ~     (all equal)

Updates #25383
Updates #25482

Change-Id: I2ffa4eafe165faa961ce23bd29b5653a89facbc2
Reviewed-on: https://go-review.googlesource.com/113996
Run-TryBot: Emmanuel Odeke <277f8eaa8c7dfbc55c17bf5e30561c1a9c45c569@gmail.com>
TryBot-Result: Gobot Gobot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Brad Fitzpatrick <ae9783c0b0efc69cd85ab025ddd17aa44cdc4aa5@golang.org>

akutz/go,akutz/go,golang/go,akutz/go,cloudflare/go,cloudflare/go,josharian/go,akutz/go,CAFxX/go,CAFxX/go,nawawi/go,CAFxX/go,cloudflare/go,CAFxX/go,josharian/go,nawawi/go,nawawi/go,nawawi/go,golang/go,golang/go,golang/go,josharian/go,akutz/go,josharian/go,nawawi/go,golang/go,CAFxX/go,josharian/go,josharian/go,josharian/go,akutz/go,nawawi/go,nawawi/go,golang/go,CAFxX/go,cloudflare/go,akutz/go,golang/go,nawawi/go,golang/go,CAFxX/go,akutz/go,CAFxX/go,josharian/go,cloudflare/go,cloudflare/go,cloudflare/go,cloudflare/go