complete refactor to use separate objects for data, expt, and curve.
curves use masked array to prepare for user curated point omission.