Recently Step has finally got collision handling. There are still lots to do but basic things are working: you can create some polygons, assign them velocities and see them collide. It has got more time then I expect mainly because of Real Life (specifically my job and university).
After reading lots of papers on collision detection and checking how it is implemented in ODE and Bullet I've decided to use Gilbert-Johnson-Keerthi algorithm for collision detection and Dantzig LCP solver for constraints (but as with ODE solvers collision solvers will be easily swappable). The main choice criteria was accuracy of the algorithm and possibility to add error estimation. Implementing GJK was quite easy, extending it to provide full collision manifold instead of one arbitrary collision point was slightly harder because of various subtle numerical problems.
Next items on my TODO list is constraint solver and performance optimizations for collision solver (by broadphase filtering and using coherency between adjacent time steps). In parallel with it I'll start to work on something from my SoC program to be in time with it.