refactor add `.gitattributes` file

This commit adds `.gitattributes` file which tells Git how to handle
internally certain kinds of files.

It also renormalizes the repo to use the new settings (hence 3 additional
files are changed).

Thanks to this settings file, the repo will always behave in the same
predictable way regardless of the user's `core.autocrlf` settings.
I.e. hopefully we will never have "whole-file-has-changed" diffs anymore.

For more info, see:
http://stackoverflow.com/questions/170961/whats-the-best-crlf-handling-strategy-with-git
https://help.github.com/articles/dealing-with-line-endings

Close #849.