Update .gitignore

This update is a compilation of SO answers that seems to be the best consensus on what should be ignored. If you notice any problems with this change, please modify this file to properly ignore unnecessary files .