simplify string markers

Upon closer inspection of the cover of The Stick Book I by
Greg Howard, a string marker is not actually divided into a
transparent and a solid box but is a single, transparent box
whose lower half is partially covered by the staff line that
it is attached to.
move acknowledgers to the top

The acknowledger for the note-head-interface stores grobs before
they are processed. This becomes clearer by placing the acknowledger
before the processing function.
remove unnecessary let binding
make stem attachment callback local
compute fret-text locally in add-fret-text
reduce number of temporary values
remove unused "note-id" binding
do not check if a grob is really a grob

`grobs' only contains proper grobs, so there's no need to
check whether the value is really a grob. The diff is so big
only because of the indentation changes.
more detailed comment
rename function: stick-fingers --> replace-note-head
"filled?" is a free variable
engraver takes context as argument

As the engraver takes a context as its argument, we no longer need
to re-parent the grobs for string or fret markers.
simplify add-property!

We no longer need to store note properties for different contexts in
one list as the engraver is called for each context separately.
simplify storage of prev-finger / prev-str-no

We no longer have to store these values per context.
use make-engraver macro (mostly indentation)
add some documentation
remove begin (indentation changes)