pull OnEdgeFunction from MarchingTriangle up to AbsractTriangleContourBuilder as OnEdgeFunction

  + also rename the wrong name OneEdge to OnEdge
add ContourNode.gradientCos()
add TrackContourBuilder.trackNodeHarder()
let TriangleContourCellFactory build cell with ContourNode thus keep same position node unique