now the game accepts a square as the target of a build order

The game chooses the first building land in the objects list of the square.
refactoring: some renaming and cleaning up
refactoring: turned Square.neighbours into a "static" property (probably faster)
refactoring: optimized World.get_place_from_xy()
added Subsquare
bug fixed: Square.neighbours and Subsquare.neighbours prevented saving a game (pickle recursion error)
refactoring of fleeing code and perception code
inserted a react_arrival() trigger in update_perception_of_object()

This might slow down the game but will allow the attacking of a revealed invisible enemy.
experimental: now the default sight_range is 1

If the experiment works, it might be even better to include the 4 diagonal squares.
now units will fire to another square if the target is close enough

other changes:
- catapults with zero range will have a minimal range of 4 and a range of "square width" (12 by default);
- effects only have a "local" sight range.
increased the range of archers and towers; now the catapult benefits from the ballistic bonus

Maybe the ballistic bonus will disappear, by the way. Maybe not.
Maybe someday the ballistic bonus could be a bonus with a value larger than 1, for bigger range bonuses.
now a unit will retaliate to an attack in the same square from another square

Then, if it survives, the unit will go to its previous place.
bug fixed: sometimes a restored game would stay frozen at the time of the save

This is caused by the fact that the interface and the simulation are in different threads.
The simulation is waiting for a lost "update" command or has sent a lost "voila" command.
now the unit will go to the center of its initial place after retaliating
added Spanish translation of the AI making manual and the modding manual

(thanks to Claudio of tiflo juegos)