Create a Piece copy constructor

Uses a reference to the other image and copies the position and
rotation.
Create a solver which randomly shuffles pieces

This solver translates and rotates pieces and tries to minimize an error
function composed of the sum of edges and overlap.
Add a function to draw pieces to an image
Add a shuffle solver to the pipeline