Split out of #2073. Port of #1392's contact sheet.
- `place.contactSheet` places every image in the place cursor on new pages
after the last one, in a grid of equal frames (columns, rows, gutter,
page margin), as one undo step; a bad grid or margin changes nothing.
- The dialog reads bare numbers in the document's unit, from the menu and
from `ui.dialog.open` alike; a mistake keeps it open with what was typed
and why. Its fields have accessible names; strings in every language.