account for all allocations off the bat
Breaking changes, read full commit message.

-csv-header has been renamed -header.
It no longer triggers -csv implicitly.
It may be used with -F or -L now, see docs.

Flag handling has become strict and illegal combinations are reported,
rather than ignored.

When not using -header with -F or -L with neither header nor named
capture groups, instead of a list of list of string, dot is
a list of *record where record is a struct containing:
	Fields []string
	Line string
Fields is the previous list of string.
Line is the complete string.
record's String method returns Line.
record has a method, F(n int), that returns the nth field in Fields or ""
if n is out of bounds.

Nonbreaking changes:

Custom usage string, more informative and ordered.

Tests for all custom code (and random edge cases closed as a result)

Moved miscellaneous functions into utils.go to make things easier to read.
new builtins
rename trim to trimCutset and trimSpace to trim
fixed slice builtin