func New(r io.Reader, f format.LineFormat) (*Dataset, error) {
	d := &Dataset{
		FSS: make([][]float64, 0, 500),
		SSS: make([][]string, 0, 500),
		TSS: make([][]time.Time, 0, 500),
	}
	return d, d.read(r, f)
}
New reads an io.Reader expected to have a dataset with one
datapoint per line and returns the parsed Dataset. In order
to parse each line, it requires a LineFormat.

For example, for an input like this:

ABC,1,2,2001-02-03
DEF,3,4,2004-05-06
...

This invocation would be appropriate:

ds, err := dataset.New(format.Parse(os.Stdin, ",", "2006-01-02"))
package dataset
import (
	"bufio"
	"io"
	"log"
	"time"
	"github.com/marianogappa/chart/format"
)
type Dataset struct {
	FSS      [][]float64
	SSS      [][]string
	TSS      [][]time.Time
	StdinLen int
}
func (d Dataset) Len() int {
	if d.FSS == nil {
		return len(d.TSS)
	}
	return len(d.FSS)
}
func MustNew(r io.Reader, f format.LineFormat) *Dataset {
	d, err := New(r, f)
	if err != nil {
		log.Fatalf("Could not build dataset: %v", err)
	}
	return d
}