Hdf5 rework rebase

rebased version of: https://github.com/twdb/hydropick/pull/56

Allows multiple concurrent users/application instances without corrupting data. Adds a new dependency: lockfile

Still to do (but could be done as a separate PR): saving pick lines from the actual GUI. I think the most general case that includes changes made by editor and runs from algorithms would be to attach a listener to all depth_line.depth_array changes that syncs to the hdf5 files, but I'm having a trouble figuring out where that's supposed to go.