feat(assembly): add diagnostic logging to solver and assembly
C++ (AssemblyObject):
- getOrCreateSolver: log which solver backend was loaded
- solve: log assembly name, grounded/joint counts, context size,
result status with DOF and placement count, per-constraint
diagnostics on failure
- preDrag/doDragStep/postDrag: log drag part count, per-step
validation failures, and summary (total steps / rejected count)
- buildSolveContext: log grounded/free part counts, constraint count,
limits count, and bundle_fixed flag
Python (kindred_solver submodule):
- solver.py: log solve entry/exit with timing, system build stats,
decomposition decisions, Newton/BFGS fallback events, drag lifecycle
- decompose.py: log cluster stats and per-cluster convergence
- Init.py: FreeCAD log handler routing Python logging to Console