make_watertight update

make_watertight working as well as when Brandon left (as far as I can tell). Refactor of the make_watertight function make_mesh_watertight and refactor of prepare_surfaces has been included.