More detailed error string for mapstructure.Error
diff --git a/mapstructure.go b/mapstructure.go
index 0a76c2f..72b6841 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -21,7 +21,14 @@
 }
 
 func (e *Error) Error() string {
-	return fmt.Sprintf("%d error(s) decoding", len(e.Errors))
+	points := make([]string, 0, len(e.Errors))
+	for i, err := range e.Errors {
+		points[i] = fmt.Sprintf("* %s", err)
+	}
+
+	return fmt.Sprintf(
+		"%d error(s) decoding:\n\n%s",
+		len(e.Errors), strings.Join(points, "\n"))
 }
 
 // Decode takes a map and uses reflection to convert it into the