shapeII: rewrite. handle arguments inside the procedure for *one* sibling

Previously, we were normalizing the arguments (so that even for one sibling
everything was converted to a list of lists of pairs) and then doing all kinds
of crazy conversions on them.  However, since i'm going to allow even more
special crazy formats, this would become really inconvenient, so i moved all
"conversion" logic to be done separately for each sibling.

This seems to produce much cleaner code.
shapeII: remove old description and add todo