__index metamethod needed a default error message.

This way it has a special message for bins, and a generic one for
everything else.
Changed loadData pattern to match only numbers.

Before it would match any string with no spaces.
Spectrum takes a table argument, not a list
separated calculate() into single and distributed

This represents a separation into logical components.
The distributed part is not yet implemented, it will throw an error.
made comment on getBin specify what it does better

Now it explains what the parameter is and what is returned.
add(), other[i] only returns one value needs two

Calling getBin() directly solves the problem, but the index operator
should be calling getBin() so I'm not sure what's going on.
initial commit for a simple csv class
Wrote saveCSV() for spectrum