Warning, it is still very rough, slow and buggy. It will only work with pretty simple shapes like in the example below. It will still need a lot of work to become reasonably fast.
How it works:
1) create a series of flat shapes. They must all, at the moment, contain exactly one face, and have the same normal (same orientation). One of the shapes, that will be the container, must be rectangular. All these restrictions should be removed in the future.
2) Press the "Nest" button under the Arch panel tools
3) Add the container shape as Container, and all the others as Shapes
4) Change settings if you wish, then press "Start"
5) Wait for the calculation to finish. On my machine, nesting the shapes here take around one minute (I told you, it's slow).
6) Click "Preview"
7) If you like the solution, press "Ok". The preview will disappear and the shapes will all be moved to occupy the correct position.
There is still a lot of work to do, allow non-rectangular container, add support for margins/padding, allow some pieces to restrict to certain rotations, etc... Plus a lot of optimizing, and maybe making some of it multi-threaded, since several parts of the process could run in parallel, and after all that, allow to make several passes to refine the solution (by swapping pieces order). But it works already, that's already a big step

The code is divided between the task panel, which is in ArchPanel.py, and the nesting algorithm itself, which is in ArchNesting.py. The idea is that it could be used by other workbenches in case they don't like the task panel, they could build other GUI tools around it.
I tried to organize and comment that file a lot, so hopefully other people will be interested im jumping in and helping to optimize it.