debug.el: Straighten the code that find the "base" of the backtrace

Let the caller tell us clearly where is the base of the backtrace,
if it's not `debug`.  This is done by passing a new `:backtrace-base`
keyword argument to `debug`.

Then use this info systematically in all the places where we access
the real C-level backtrace, to try and avoid inconsistencies and brittle
code that tries to enumerate the expected frames we're in.

* src/eval.c (get_backtrace_starting_at): Add support for offsets in the
`base` argument.
(Fbacktrace_debug): Add optional `base` argument.

* lisp/emacs-lisp/debug.el (debug, debugger-frame, debugger-frame-clear):
Use `debugger--backtrace-base` when calling `backtrace-debug`.
(debugger-setup-buffer): Use `debugger--backtrace-base`
when calling `backtrace-get-frames`.
(debugger-frame-number): Drop `skip-base` arg, assume it's never nil.
Add sanity check.
(debugger--backtrace-base): Use the `:backtrace-base` info
in `debugger-args`.
(debugger-eval-expression): Adjust call to `debugger-frame-number`.
(debug--implement-debug-on-entry): Pass appropriate `:backtrace-base`.
4 jobs for master in 49 minutes and 4 seconds (queued for 12 seconds)
Status Job ID Name Coverage
  Build Images
passed #78602
build-image-inotify

00:42:24

 
  Normal
passed #78604
test-lisp-emacs-lisp-inotify

00:06:21

failed #78603
test-lisp-inotify

00:06:39

passed #78605
test-src-inotify

00:06:11

 
Name Stage Failure
failed
test-lisp-inotify Normal
Uploading artifacts for failed job
Uploading artifacts...
test-lisp-inotify-6937182a/: found 119 matching files and directories

Uploading artifacts as "archive" to coordinator... 201 Created
id=78603 responseStatus=201 Created token=iv482xra
Uploading artifacts...
test-lisp-inotify-6937182a/junit-test-report.xml: found 1 matching files and directories

Uploading artifacts as "junit" to coordinator... 201 Created
id=78603 responseStatus=201 Created token=iv482xra
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 2