Overwrite ignored files on checkout

When checkout out a target, we currently consider ignored items to be "precious" and are conflicts.  This changes the default behavior such that they will be overwritten by default to match core git behavior.  It adds the flag `GIT_CHECKOUT_DONT_OVERWRITE_IGNORED` for those who want the previous behavior, where ignored files will be considered precious.