runtime: replace lock() with casp() in the GC

Note: BitTarget will be removed by a forthcoming changeset.

R=golang-dev, dvyukov
CC=golang-dev, rsc
https://codereview.appspot.com/7837044
cmd/gc: fix escape analysis bug.

It used to not mark parameters as escaping if only one of the
fields it points to leaks out of the function. This causes
problems when importing from another package.

Fixes issue 4964.

R=rsc, lvd, dvyukov, daniel.morsing
CC=golang-dev
https://codereview.appspot.com/7648045