Benchmark memory more realistically.

Using shell.Split to benchmark produces a lot of noise from the accumulation of
the results into the output slice. To get a more accurate memory profile, use
the scanner directly and discard the tokens as they are processed.

This allows us to (still) count the total memory allocated during the split,
but does not charge it against the wrong code.

This change makes the benchmark look a little bit faster, but not enough to
worry about.
diff --git a/bench_test.go b/bench_test.go
index 23c86a8..9f12684 100644
--- a/bench_test.go
+++ b/bench_test.go
@@ -5,6 +5,7 @@
 	"fmt"
 	"math"
 	"math/rand"
+	"strings"
 	"testing"
 
 	"bitbucket.org/creachadair/shell"
@@ -67,8 +68,10 @@
 	for _, n := range lens {
 		b.Run(fmt.Sprintf("len_%d", n), func(b *testing.B) {
 			for i := 0; i < b.N; i++ {
-				shell.Split(input[:n])
+				shell.NewScanner(strings.NewReader(input[:n])).Each(ignore)
 			}
 		})
 	}
 }
+
+func ignore(string) bool { return true }