Implement function check-grob-path for checking/extending grob path specs
From the function documentation string:
Check a grob path specification @var{path}, a symbol list (or a
single symbol), for validity and possibly complete it. Returns the
completed specification, or @code{#f} if invalid. If optional
@var{parser} is given, a syntax error is raised in that case,
optionally using @var{location}. If an optional keyword argument
@code{#:start @var{start}} is given, the parsing starts at the given
index in the sequence @samp{Context.Grob.property.sub-property...},
with the default of @samp{0} implying the full path.
If there is no valid first element of @var{path} fitting at the given
path location, an optionally given @code{#:default @var{default}} is
used as the respective element instead without checking it for
validity at this position.
The resulting path after possibly prepending @var{default} can be
constrained in length by optional arguments @code{#:min @var{min}} and
@code{#:max @var{max}}, defaulting to @samp{1} and unlimited,
respectively.