Issue 4078: Doc: Use variables rather than instrument definitions

  Using variables for switching character names in vocal music
  rather than instrument definitions is easier to understand,
  easier to set up and quicker to type.  It also frees up the
  use of instrument definitions so they may be tailored for
  better use in instrumental compositions.

  Remove the mention of \transposition.  This is never required
  in vocal music.

  Adjust references to match the changes.
note-collision: rework horizontal shifts; issue 1774,2196

Also allow duplicate 'horizontal-shift's without the "too many clashing
note-columns" warning.
Ottava Bracket bounds; issue 3690

Ottava Bracket: do not dash edges; issue 3866
Initialize main_head to 0 (in Note_column::calc_main_extent)

Make sure that the pointer won't be assigned a random value.
Replace internal_get_property with get_property where possible

Note that thanks to lily-guile-macros magic, we can use get_property
with both string and SCM input (see lily/include/lily-guile-macros.hh:48).
Issue 4091: Lexer: don't go through int for fractions

GUILE can deal fine with things like
\void \displayScheme 6563546345635436/3654635463456
if one does not route through C code.
Issue 4086/1: Reimplement Input in terms of Simple_smob
Issue 4086/2: Add include/small-smobs.hh for smobs without extra allocation
Issue 4086/3: Reimplement Music_function in terms of Smob2
Issue 4086/4: Reimplement Simple_closure using Smob1
Issue 4086/5: Introduce callable Smob infrastructure
Issue 4086/6: Reimplement unpure-pure-containers in terms of Simple_smob and Smob1
Issue 4028: Automatic beaming of grace notes inhibits beam subdivision

While the whole extend_mom_ logic seems rather fishy to me (it probably
should be reset to a sane value at some other location per-beam) and
I don't have an actual idea why the Grace_auto_beam_engraver would
be involved at all here, initializing extend_mom_ to a value before
all grace notes seems to do the trick for this report.
Issue 3849: \parenthesize\p generates programming error

Register a grob as the cause for DynamicLineSpanner rather than an event.
Make "Don't know how to parenthesize spanners." warning, not programming error

Also add location information.
Don't verify result of String_convert::dec2int

The error behavior is not useful and triggers on things like "00".
Issue 3832: react sanely to ill-formed version strings

Mostly, this cleans up Lilypond_version

We no longer convert to int because it is weird, but we still want
version comparisons.  Conversion to bool for checking validity seems
nice in addition.

And bombing out because of invalid data to String_convert::dec2int
seemed definitely non-nice.  This version requires specifying at
least major and minor version number explicitly separated by dots.

It accepts a trailing dot, too.  A trailing extra_patch_string after
major.minor.patchlevel. is also accepted but not interpreted.
Issue 4030: Lyrics associated to a Staff are placed on top of each other

The approach here is simply to avoid attaching to noteheads that have
actually started _before_ the current moment of time.  It is somewhat
irritating that includeGraceNotes cannot possibly be supported in
associated voices with its own timing (rather than the fully
synchronized \addlyrics or \lyricsto): Instead you need to use the same
durations, including \grace constructs, in order to match the note you
are aiming for.
Issue 4092: Limit tuplet bracket length to actual tuplet length

See the regtest for an example of the problem.  Without the patch, the
tuplet bracket extends over all of

  \tuplet 3/2 4 { g16 a b } c8

including c8, resulting in visual lengths not adding up.
Issue 3855: programming error with \markup \fill-line { \vspace #10 }