Determine a script's filename from within the script itself

Description:

     A small set of functions wrapping up the call stack and command
     line inspection needed to determine a running script's filename
     from within the script itself.

Usage:

     current_filename()
     
     current_source_filename()
     
     current_cli_filename()
     
Details:

     ‘current_filename()’ returns the result of
     ‘current_source_filename()’ if not NULL, otherwise the result of
     ‘current_cli_filename()’, which might be NULL.  You should use
     this wrapper function rather than the more-specific functions
     unless you have a very specific need.

     ‘current_source_filename()’ returns the filename from the most
     recent call to ‘source’ in the current call stack.  From within a
     sourced script, this is the filename of the script itself.

     ‘current_cli_filename()’ returns the filename found on the command
     line invocation of R or Rscript.  This may or may not be the
     caller's file if there's been an intervening ‘source’.

Value:

     A character vector of length 1 if a script name can be found,
     otherwise NULL.  No manipulation is done to the filename, so it
     may be relative or absolute.

Examples:

     # Put this in example.R and try running source("example.R")
     # and `Rscript example.R`
     filename <- current_filename()
     print(filename)