Renaming `all` to `list`

All is less flexible and less intuitive than 'list', and list is an
actual verb with makes more sense in a command context.
Adding '_item' suffix to all functions used in list operations

This suffix provides a clearer distinction between the item function and
the user-facing function, and also provides more information about what
each function's purpose is.

Also updating header comment to include this format in the example.
Adding 'tracked' and 'untracked' as arguments for list.

This are currently treated as shortcuts for the 'tracked' and 'untracked'
functions. This addition makes it possible for both of these tasks to be
run in the following way:

$ dots list tracked
$ dots list untracked
Adding `dots list .dotfile` syntax for listing individual dotfiles.

If a dotfile name is passed as the second argument, then a listing is
displayed for that dotfile.
Adding individual file linking to dots link

dots link still links all files by default, but now a filename can be
passed as an argument, which will create a link for that file.
Reorganization: moving clean below link, since it is the inverse task
Renaming 'clean' task to 'unlink'

Since this is the inverse of 'link' and the name 'clean' is ambiguous,
renaming this task to 'unlink'. This naming also reflects the naming
used by homebrew.
Adding individual file unlinking to dots unlink

dots unlink still unlinks all files by default, but now a filename can
be passed as an argument, which will remove the link for that file.
Clearer feedback in `dots unlink`
Adding optional file indicator in `dots list` usage.
Removing `backup_status` and `clear` tasks

Neither of these is useful in the current workflow and really just add
to confusion about how the program should be used.

`dots clear` removed links and created `.bak` files from existing files.
At this point, it's hard for me to understand what the purpose of this
was, so instead of trying to figure out the confusing functionality, I'm
removing it. This also really doesn't have a place since the current
workflow of `add`, `resore`, `link`, and `unlink` should contain all of
the necessary functionality (mean `.bak` files don't seem necessary).

`dots backup_status` only existed to provide some insight into what was
going on with the `.bak` files, but if they are gone then this is no
longer necessary.
Removing `local` keywords in variable assignments

These were haphazardly added and should be removed for now, though
hopefully added back eventually when they actually serve a meaningful
purpose in the program.
Adding `dots update` task for running package update scripts

This is the first step in phasing out the individual commands for
running package and configuration update scripts. These tasks should
ideally be dynamically generated based on the files that are present in
the target folder, and this task provides the first example of how to
approach accomplishing that.

For now, the existing functions are still present, to be removed at a
future point when it's clear that this new function is working properly.
Adding `--all` option to `dots update`

`--all` runs all of the package install scripts in the packages
directory.

In order to make this work nicely, creating a new
`_run_package_update_script` function for running each individual
package update script.
Replacing instances of `-a` file exist tests with `-e`

`-e` is much cleaerer, and some sources state that `-a` is deprecated.
Removing individual package update tasks

These have now been made obsolete by the single `update` command.
Adding `configure` task.

This task follows the same structure as the `update` task.
Removing old configure tasks.

These have been replaced by the individual configure task.
Replacing `customize_icons` with more generalized `customize` task

This task is also constructed exactly the same as `update` and
`configure`.
Fixing some copy/paste oversights in help text.