We don't need to conditionally set our prompt character; this is built into the functionality of $PS1
Fix a typo that prevented the backup directory from being created
Use single quotes to set PS1, so \$ isn't escaped
Determine the real physical location of the dotfiles directory during setup
Update setup script with better logic for (sanely) resolving symbolic links

Specifically, if the setup script is a symbolic link, these links are
resolved (recursively, even); but if the dotfiles directory itself is a
symbolic link, these links are not resolved.

Examples:

If dotfiles is located at /etc/dotfiles, the directory is symlinked to
~/.dotfiles, and the user sources ~/.dotfiles/setup, the script will
generate relative symbolic links to ~/.dotfiles/etc/*.

If dotfiles is located at /etc/dotfiles, the setup script is symlinked
to ~/.dotfiles, and the user sources ~/.dotfiles, the script will
generate absolute symbolic links to /etc/dotfiles/*.
Use ln -f instead of ln -F for cross-platform compatibility
Back up existing symlinks, rather than attempting to overwrite