Adding dots to bin

For experimentation
Removing redundant variable settings in dotfiles.sh
Adding additional management tasks to dotfiles.sh

Additional tasks include:

- list
- list-untracked
- list-tracked
- add
- restore

Also including another helper function for iterating over the target
dotfile directory.
Clearer section dividers in dotfiles.sh
Always assigning a $source_file and $target_file during iteration

By including these variables, all sub-functions can access the
parameters in a more logical way.

Also updating example to reflect this change and the inclusion of both
iteration functions.
Moving file iteration into single function

Using separate wrapper functions to call the _each_file() function with
a specified directory.
Adding comments for dotfiles.sh top-level variables.
Refactoring tasks listing in dotfiles.sh to build an array

This should make it slightly easier to reason about how the task list is
printed.
Reversing logic in dotfiles.sh tasks so now list is pretty by default

Since this is a user-facing task, printing it as a pretty list by
default and only printing as raw list when passed the --raw flag
Respond with an error when a non-existent task is called.
Adding comment describing _function_exists()