crude experiment: test using string arguments in function
copy \shape from current lilypond master
shape: allow shorthand notation using only one or two offset pairs per slur
use string=? instead of equal?, as David suggested
try converting 2-elem lists into pairs

I'd like to make \shape syntax shorter by using 2-element lists
instead of pairs (so that i don't have to type the dot).
Additionally, i'd like \shape to interpret an empty list as
a zero offset.  In other words, i'd like

\shape #'((0 1)()()(-0.5 0))

to be interpreted as

\shape #'((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0))

However, i see the following problem that i have to solve first:
 if i understand correctly, this fragment of code

       ;; we work with lists of lists
       (if (or (null? offsets)
               (not (list? (car offsets))))
           (set! offsets (list offsets)))

is for converting ((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0)) into
(((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0))) (additional nesting layer,
as if the slur was broken).  It seems that this piece of code
depends on the fact that the fist element of
((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0)) is not a list, but a pair.
If i wanted to use ((0 1)()()(-0.5 0)) as a synonym for
((0 . 1)(0 . 0)(0 . 0)(-0.5 . 0)), i'd have to change this condition.
I don't know what should it be - i've tried

       ;; we work with lists of lists
       (if (or (null? offsets)
               (not (list? (caar offsets))))
           (set! offsets (list offsets)))

but it didn't work...  Suggestions?
Revert "try converting 2-elem lists into pairs"

This reverts commit f971556424a6dca178f3dca5619de48997305cff.
flip offsets for downward direction
change shape examples
Update and rename shape.ly to shape.ily

Make it includable.

Removed content will be added in the next commit
(working on the web interface...).
Create shape-example.ly

Don't work on finishing the snippet off with metadata
(as I'm on the Github web interface)
shape-example: Add missing \include
normalized shape from David
simplification by David
reword comment
Allow (0 0) as a shorthand for (0 . 0)
Allow () as a shorthand for (0 . 0)
normalized shape: fix formatting
fix normalization bug (normalization was triggered even when unnneeded)
shape-example: Make parameters more obvious, add example

Modify argument values so the effects are more obviously visible.
Add an example for the ()->(0 0) shorthand

TODO(?): Example for broken slurs
normalized shape: change examples and names