Implement poly-time determinant without divisions.

This is based on the paper 'A Simple Division-Free Algorithm for
Computing Determinants' (Bird 2011).
Fixed merge conflicts