Added pawn promotion moves

In order to do so added a new constructor to Move. Improved the contracts
on the existing constructors and added unit tests for the new one.

Fixed a bug in the generate string mixin.