parser: fix a goroutine leak created in 4f2a0f3d7
parser: fix a goroutine leak created in 4f2a0f3d7

The scanner sends TokenUnknown to the parser in two cases. The first
is when it parses an unknown token, which is what that CL was trying
to fix. The second is when the scanner has been told there is no
more work, and it is signalling that to the parser. In the second
case, the goroutine should exit and the parser eventually be garbage
collected.

The fix broke the second case, pinning the goroutines and with them
all the parse tree results from every run. The result was a memory
blowout.

Before this commit:
	$ go test -memprofile memprof neugram.io/ng/eval
	$ go tool pprof memprof
	(pprof) top
	Showing nodes accounting for 5.27GB, 100% of 5.27GB total
	Dropped 41 nodes (cum <= 0.03GB)
	      flat  flat%   sum%        cum   cum%
	    3.08GB 58.41% 58.41%     3.08GB 58.41%  neugram.io/ng/parser.(*Parser).error (inline)
	    2.19GB 41.55%   100%     2.19GB 41.55%  fmt.Sprintf
		 0     0%   100%     5.27GB   100%  neugram.io/ng/parser.(*Parser).errorf
		 0     0%   100%     5.27GB   100%  neugram.io/ng/parser.(*Parser).work

With this commit:

	(pprof) top
	Showing nodes accounting for 809.97kB, 100% of 809.97kB total
	Showing top 10 nodes out of 18
	      flat  flat%   sum%        cum   cum%
	  809.97kB   100%   100%   809.97kB   100%  go/internal/gcimporter.(*importer).pos.func1
		 0     0%   100%   809.97kB   100%  go/importer.(*gcimports).Import

Fixes #100

neugram/ng,neugram/ng