Double backjumping & Forward checking

DO NOT MERGE. I think this a fundamentally broken thing to do, as it over-zealously prunes the search space.

\c @floere @kylef @alloy @indirect @who828