parser: alloc single-part words in batches too
parser: alloc single-part words in batches too

Lots of words have a single part in them, and we were allocating a slice
of cap 1 for those cases. Net gains everywhere.

name                    old time/op    new time/op    delta
Parse/LongLit-4            989ns ± 3%     934ns ± 0%   -5.57%          (p=0.004 n=6+5)
Parse/Cmds-4              7.03µs ± 1%    6.01µs ± 1%  -14.53%          (p=0.002 n=6+6)
Parse/Quoted-4            1.17µs ± 1%    1.17µs ± 2%     ~             (p=0.729 n=6+6)
Parse/NestedStmts-4       5.16µs ± 0%    5.02µs ± 1%   -2.72%          (p=0.002 n=6+6)
Parse/Assign+Clauses-4    4.75µs ± 1%    4.61µs ± 1%   -3.00%          (p=0.002 n=6+6)
Parse/Binary-4            3.35µs ± 1%    3.18µs ± 0%   -5.10%          (p=0.004 n=6+5)
Parse/Redirect-4          3.35µs ± 1%    3.17µs ± 0%   -5.33%          (p=0.004 n=6+5)

name                    old allocs/op  new allocs/op  delta
Parse/LongLit-4             7.00 ± 0%      6.00 ± 0%  -14.29%          (p=0.002 n=6+6)
Parse/Cmds-4                 108 ± 0%        69 ± 0%  -36.11%          (p=0.002 n=6+6)
Parse/Quoted-4              11.0 ± 0%      11.0 ± 0%     ~     (all samples are equal)
Parse/NestedStmts-4         62.0 ± 0%      56.0 ± 0%   -9.68%          (p=0.002 n=6+6)
Parse/Assign+Clauses-4      58.0 ± 0%      52.0 ± 0%  -10.34%          (p=0.002 n=6+6)
Parse/Binary-4              42.0 ± 0%      35.0 ± 0%  -16.67%          (p=0.002 n=6+6)
Parse/Redirect-4            34.0 ± 0%      28.0 ± 0%  -17.65%          (p=0.002 n=6+6)

mvdan/sh,mvdan/sh,mvdan/sh,mvdan/sh