fix $(eval foo := $$x) case

in ./repo/android.sh time kati -n, it failed
this was because

repo/android/build/core/definitions.mk
define my-dir
 ..
  $(eval LOCAL_MODULE_MAKEFILE := $$(lastword $$(MAKEFILE_LIST))) \
 ..
endef

this was parsed as
 funcEvalAssign{
   lhs: "LOCAL_MODULE_MAKEFILE"
   op: ":="
   rhs: "$(lastword $(MAKEFILE_LIST))"
 }

so, LOCAL_MODULE_MAKEFILE becomes `$(lastword $(MAKEFILE_LIST))`,
but it should be result of $(lastword $(MAKEFILE_LIST)).

if rhs contains '$' in literal, it should be evaluated again.
diff --git a/parser.go b/parser.go
index 7d8f290..cef4a4d 100644
--- a/parser.go
+++ b/parser.go
@@ -80,7 +80,7 @@
 	if err == io.EOF {
 		p.done = true
 	} else if err != nil {
-		panic(err)
+		panic(fmt.Errorf("readline %s:%d: %v", p.mk.filename, p.lineno, err))
 	}
 
 	line = bytes.TrimRight(line, "\r\n")
@@ -414,7 +414,7 @@
 func (p *parser) parse() (mk Makefile, err error) {
 	defer func() {
 		if r := recover(); r != nil {
-			err = fmt.Errorf("panic: %v", r)
+			err = fmt.Errorf("panic in parse %s: %v", mk.filename, r)
 		}
 	}()
 	for !p.done {
@@ -520,6 +520,7 @@
 }
 
 func ParseMakefile(filename string) (Makefile, error) {
+	Log("ParseMakefile %q", filename)
 	f, err := os.Open(filename)
 	if err != nil {
 		return Makefile{}, err