Support coverage testing of GOROOT packages

- Moved "parser.go" into a subpackage: gocov/parser.
- Minimised dependencies of gocov core package to just: runtime, sync, sync/atomic, syscall.
- Symlink as GOROOT rather than GOPATH, so package IDs needn't be changed. This means packages with C/asm code shouldn't be a problem.
- Preallocate strings during pkg/func/stmt registration, so there are no mallocs introduced into instrumented functions.
- Added a "-run" flag to gocov test (same usage as "go test -run ...".
- Added some tests for gocov, and made it possible for gocov to test itself.