cmd/gc: make runtime escape an error, not a fatal error

It is more useful to report all the errors instead of just the first.

LGTM=dave, khr
R=khr, dave
CC=golang-codereviews
https://codereview.appspot.com/143940043
io: clarify Reader returning 0, nil

Fixes issue 8317.

LGTM=bradfitz
R=bradfitz, iant, r
CC=golang-codereviews
https://codereview.appspot.com/143100043
cmd/gc: say 'non-constant array bound' instead of 'invalid array bound'

Fixes issue 8196.

LGTM=adonovan
R=adonovan
CC=golang-codereviews
https://codereview.appspot.com/141510044
runtime: remove duplicated Go constants

The C header files are the single point of truth:
every C enum constant Foo is available to Go as _Foo.
Remove or redirect duplicate Go declarations so they
cannot be out of sync.

Eventually we will need to put constants in Go, but for now having
them be out of sync with C is too risky. These predate the build
support for auto-generating Go constants from the C definitions.

LGTM=iant
R=iant
CC=golang-codereviews
https://codereview.appspot.com/141510043
runtime: use traceback to traverse defer structures

This makes the GC and the stack copying agree about how
to interpret the defer structures. Previously, only the stack
copying treated them precisely.
This removes an untyped memory allocation and fixes
at least three copystack bugs.

To make sure the GC can find the deferred argument
frame until it has been copied, keep a Defer on the defer list
during its execution.

In addition to making it possible to remove the untyped
memory allocation, keeping the Defer on the list fixes
two races between copystack and execution of defers
(in both gopanic and Goexit). The problem is that once
the defer has been taken off the list, a stack copy that
happens before the deferred arguments have been copied
back to the stack will not update the arguments correctly.
The new tests TestDeferPtrsPanic and TestDeferPtrsGoexit
(variations on the existing TestDeferPtrs) pass now but
failed before this CL.

In addition to those fixes, keeping the Defer on the list
helps correct a dangling pointer error during copystack.
The traceback routines walk the Defer chain to provide
information about where a panic may resume execution.
When the executing Defer was not on the Defer chain
but instead linked from the Panic chain, the traceback
had to walk the Panic chain too. But Panic structs are
on the stack and being updated by copystack.
Traceback's use of the Panic chain while copystack is
updating those structs means that it can follow an
updated pointer and find itself reading from the new stack.
The new stack is usually all zeros, so it sees an incorrect
early end to the chain. The new TestPanicUseStack makes
this happen at tip and dies when adjustdefers finds an
unexpected argp. The new StackCopyPoison mode
causes an earlier bad dereference instead.
By keeping the Defer on the list, traceback can avoid
walking the Panic chain at all,  making it okay for copystack
to update the Panics.

We'd have the same problem for any Defers on the stack.
There was only one: gopanic's dabort. Since we are not
taking the executing Defer off the chain, we can use it
to do what dabort was doing, and then there are no
Defers on the stack ever, so it is okay for traceback to use
the Defer chain even while copystack is executing:
copystack cannot modify the Defer chain.

LGTM=khr
R=khr
CC=dvyukov, golang-codereviews, iant, rlh
https://codereview.appspot.com/141490043
runtime: remove untyped allocation of ParFor

Now it's two allocations. I don't see much downside to that,
since the two pieces were in different cache lines anyway.

Rename 'conservative' to 'cgo_conservative_type' and make
clear that _cgo_allocate is the only allowed user.

This depends on CL 141490043, which removes the other
use of conservative (in defer).

LGTM=dvyukov, iant
R=khr, dvyukov, iant
CC=golang-codereviews, rlh
https://codereview.appspot.com/139610043
runtime: remove uses of ScanConservatively

Along with CLs 139610043 and 141490043,
this removes all conservative scanning during
garbage collection, except _cgo_allocate,
which is SWIG-only.

LGTM=rlh, khr
R=golang-codereviews, dvyukov, rlh, khr
CC=golang-codereviews, iant
https://codereview.appspot.com/144860043
runtime: fix 386 build

mark finalizer1 as having no pointers

TBR=iant
CC=golang-codereviews
https://codereview.appspot.com/141570045
cmd/5g, cmd/8g: make 'out of registers' a fatal error

There's no point in continuing. We will only get confused.
6g already makes this fatal.

LGTM=dave, minux, iant
R=iant, dave, minux
CC=golang-codereviews
https://codereview.appspot.com/140660043
net: make TestSelfConnect less fragile

We believe TestSelfConnect can accidentally connect to
something else listening on or dialing from that port.

Fixes issue 8680.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews, rlh
https://codereview.appspot.com/136700043
os/signal: increase timeout from 10ms to 100ms

Might make test less flaky.
Fixes issue 8682.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://codereview.appspot.com/143160043
runtime: make it clear that Goexit cannot be recover'd.

LGTM=r
R=r, bradfitz, khr
CC=golang-codereviews
https://codereview.appspot.com/136660044