rewrite matrix rotation algorithm
use assert in model_math
remove generic in geometry
modify test.model_geometry for generic removement
remove generic in model.puzzle
add exception to model and add SimpleMovement
remove SimpleMovement
seperate abstraction/implementation in math