use plain type name in value parse error messages

Fixes issue 1.
diff --git a/gcfg.go b/gcfg.go
index ab0243b..9be3af1 100644
--- a/gcfg.go
+++ b/gcfg.go
@@ -5,7 +5,7 @@
 // See ReadInto and the examples to get an idea of how to use it.
 //
 // This package is still a work in progress, and both the supported syntax and
-// the API is subject to change.
+// the API is subject to change. See below for planned changes.
 //
 // The syntax is based on that used by git config:
 // http://git-scm.com/docs/git-config#_syntax .
@@ -40,13 +40,14 @@
 //    - support multi-value variables
 //    - support multiple inputs (readers, strings, files)
 //    - support declaring encoding (?)
-//    - support automatic derefereining of pointer fields (?)
+//    - support automatic dereferencing of pointer fields (?)
 //    - support varying fields sets for subsections (?)
 //  - scanEnum
 //    - should use longest match (?)
 //    - support matching on unique prefix (?)
 //  - writing gcfg files
 //  - error handling
+//    - report position of extra characters in value
 //    - make error context accessible programmatically?
 //    - limit input size?
 //  - move TODOs to issue tracker (eventually)
diff --git a/issues_test.go b/issues_test.go
new file mode 100644
index 0000000..845ab37
--- /dev/null
+++ b/issues_test.go
@@ -0,0 +1,34 @@
+package gcfg
+
+import (
+	"strings"
+	"testing"
+)
+
+type Config1 struct {
+	Section struct {
+		Int int
+	}
+}
+
+var testsIssue1 = []string{
+	"[section]\nint=X",
+	"[section]\nint=",
+	"[section]\nint=1A",
+}
+
+// value parse error message shouldn't include reflect internals
+func TestIssue1(t *testing.T) {
+	for i, tt := range testsIssue1 {
+		var c Config1
+		err := ReadStringInto(&c, tt)
+		switch {
+		case err == nil:
+			t.Errorf("%d: ok; wanted error", i)
+		case strings.Contains(err.Error(), "reflect"):
+			t.Errorf("%d: error message includes reflect internals: %v", i, err)
+		default:
+			t.Logf("%d: %v", i, err)
+		}
+	}
+}
diff --git a/set.go b/set.go
index 935a7a9..fb953e3 100644
--- a/set.go
+++ b/set.go
@@ -73,10 +73,10 @@
 	n, err := fmt.Sscanf(value, "%v%c", vAddr, &r)
 	switch {
 	case n < 1 || n == 1 && err != io.EOF:
-		return fmt.Errorf("failed to parse %q as %#v: parse error %v", value,
-			vName.Type(), err)
+		return fmt.Errorf("failed to parse %q as %v: %v", value, vName.Type(),
+			err)
 	case n > 1:
-		return fmt.Errorf("failed to parse %q as %#v: extra characters", value,
+		return fmt.Errorf("failed to parse %q as %v: extra characters", value,
 			vName.Type())
 	case n == 1 && err == io.EOF:
 		return nil