Updated .gitignore feature to allow custom ignores

Instead of completely recreating .gitignore files when needed, tup now
uses the line `##### TUP GITIGNORE #####` to designate user created
ignores and tup generated ones. Everything above the line is copied
to the new gitignore file, and everything below it is regnerated. This
allows users to add their own files to ignore directly into a project's
.gitignore file.