developer doc
~~~~~~~~~~~~~

Generic workflow:
	0. (tool starts)
	1. create a grbs map of the board
	2. make some modifications to the grbs model (e.g. remove the object that
	   is going to be stretched)
	3. save a grbs snapshot of this initial state
	4. (tool move)
		4.1. restore snapshot
		4.2. attempt to modify the grbs model
		4.3. (tool redraws)
		4.4. go to 4.
	5. (tool click)
		5.1. verify if current grbs model is acceptable; if not, cancel
		5.2. if acceptable call install() with current grbs and the snapshot
			5.2.1. install() compares all snapshot grbs object and current grbs object
			5.2.2. if any of them differ, it is copied back to the pcb model
