runtime: use multiplication with overflow check for makechan
runtime: use multiplication with overflow check for makechan

This improves performance for channels with an element size
larger than 32 bytes and removes loading a value from the
maxElems array for smaller element sizes.

MakeChan/Byte       88.8ns ± 6%  85.2ns ± 1%  -4.03%  (p=0.000 n=10+10)
MakeChan/Int         100ns ± 4%    96ns ± 2%  -3.72%  (p=0.000 n=9+10)
MakeChan/Ptr         124ns ± 3%   126ns ± 2%    ~     (p=0.068 n=10+10)
MakeChan/Struct/0   80.5ns ± 2%  80.7ns ± 2%    ~     (p=0.697 n=10+10)
MakeChan/Struct/32   143ns ± 4%   141ns ± 2%    ~     (p=0.221 n=10+10)
MakeChan/Struct/40   169ns ± 2%   159ns ± 4%  -6.26%  (p=0.000 n=10+10)

Updates #21588

Change-Id: Ifbf12a5af2f0ec7e1d2241ecfffab020e9abec48
Reviewed-on: https://go-review.googlesource.com/c/144017
Reviewed-by: Keith Randall <8c99c3a9284e493be632950b84cd789d08ed3e9d@golang.org>

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