Improve snap algorithm reducing likelyhood of invalid output

 - Snap input vertices to closest snap point (#629)
 - Do not snap segments to external points (#501)
 - Never snap multiple vertices to the same snap point

Work funded by Tuscany Region - SITA. Contract "Support to the use
of GFOSS (Geographic Free and Open Source Software) Desktop tools"
(CIG Z3B06FA6D7).

git-svn-id: http://svn.osgeo.org/geos/trunk@3800 5242fede-7e19-0410-aef8-94bd7d2200fb