Removed final position snapping step.

The idea was that this would tidy up the graph, making nearly-perfect alignments perfect. In reality though, two things happen :

- It also makes some alignments worse, when they round in different directions.
- The final step basically introduces energy into the system, by moving things from the position it has converged to. Hitting the layout button again may then converge to a different solution, which seems very wrong as a user - we want to give the impression that we're always finding the "right" layout, not just guesstimating with a whole load of heuristics (which is what we are doing in reality).
Added accessors for controlling layout algorithm.

These are deliberately somewhat vague (scales rather than absolute values) so that in future we could start computing per-edge lengths and per-node separations using properties of the graph.

Also turned some internal constants into member variables for clarity - not exposing them yet because they're really details of the algorithm rather than desired properties of the layout. Hopefully we won't ever need to expose them fully.