Make move sorting a lot faster

Linux "perf" indicated that this was a huge hotspot. The movegen already
knows which moves are promos and captures, so write those into separate
parts of the movelist. Then, we don't have to look at each part when
sorting and iterating -- promos are always better than captures, which
are always better than everything else.

This, indeed, gave a dramatic speedup.