Serialize fit results

This isn't ready to be fully pulled in yet, but it at least partially implements what we were talking about for serialisation: two basic classes that allow you to store the necessary information for fitting results.
is there a good reason for this ability to choose `PointCloud` or not? Feels pretty redundant (I know you were just adapting what is already there but might be a good opportunity to tidy things up a little)