Gitignore

This (which took an amazingly large amount of work as you can probably tell) adds a gitignore file to avoid accidental addition of files that should not be versioned