shapeII: support different kinds of specifications

Instead of using internal conversion between 2-elem lists and pairs
(etc.), the function now simply chooses different subroutines based
on the type of the specification received.  This allows to add new
ways of handling specifications (formerly called "offsets") easily.

For example, i will later add polar coordinates here.