Improve simulation speed

The simulate function now reorders unfixed cells and branch at the most
fixed cell (which has the fewest possibilities). This decreases the
number of nodes to search.