syscall: Plan 9: use lightweight errstr in entersyscall mode

Change 231af8ac63aa (CL 7314062) made runtime.enteryscall()
set m->mcache = nil, which means that we can no longer use
syscall.errstr in syscall.Syscall and syscall.Syscall6, since it
requires a new buffer to be allocated for holding the error string.
Instead, we use pre-allocated per-M storage to hold error strings
from syscalls made while in entersyscall mode, and call
runtime.findnull to calculate the lengths.

Fixes issue 4994.

R=rsc, rminnich, ality, dvyukov, rminnich, r
CC=golang-dev
https://codereview.appspot.com/7567043

Committer: Ron Minnich <rminnich@gmail.com>