Refactor the I/O for survey lines into separate functions

A bit of cleanup to make it easier to manage reading of binary files and read & writing of HDF5.  Not all functionality that we'll need is there yet, but works for the application as it is now.

The HDF5 structure still needs to be fleshed out.  In particular, a next step is to put the sonar images there so the `SurveyLine` objects don't need to refer back to the binary file.