Improved the switching of tabs to spaces

Anyone checking the repository out will just get spaces, because that's what
git's storing now.  The filter will run all the time and replace any new tabs
before they can be committed.

Anyone with an inflight branch will see tabs on that branch, because the
`.gitattributes` file won't exist yet.

Anyone who merges an inflight branch with master will have their branch
transparently renormalized before git tries to merge, thanks to
`merge.renormalize`.  After the merge, the branch will have spaces.  Most likely
the developer will never notice anything changed at all.  (This also applies in
the other direction: if other work happens on master while you're detabbing in a
branch, you can merge master in seamlessly.  Either way, `.gitattributes` ends
up in the merged result, and that's what Git uses.)

Anyone who _rebases_ an inflight branch is totally fucked, because
`merge.renormalize` doesn't apply to rebasing.  So you must send out another BIG
SCARY EMAIL informing all your rebasing jerks that they **must** pass
`-Xrenormalize` anytime they rebase a tabbed branch.  This will more explicitly
do the same thing that happens for merging.  (It works for merging, too, but
since there's a config flag there's not much reason to use it there.  Also the
same applies to `cherry-pick` and other ways of rearranging commits.)

_New_ files on inflight branches **WILL NOT** be de-tabbed during the merge—they
were only changed on one side, so git sees no reason to merge them!  But git
will still consider their "canon" representations to be **spaces**, so `git
diff` will claim that every single indented line has "changed" from tabs to
spaces, _even if_ the file on disk still contains tabs.  `git checkout` or `git
reset --hard` will not make the "changed" files go away.

See https://gist.github.com/eevee/6721177 for more informations