Constructive Geometric Constraint Solving as a General Framework for KR-Based Declarative Spatial Reasoning