.gitattributes: mark most scripts in build_tools as not for export

(but not all!) build_documentation.sh is needed for the tarball if you run make distclean
add git_version_gen: generate a version number from the git tree

Originally from the git sources (GIT-VERSION-GEN)
(C) Junio C Hamano <junkio@cox.net>
Reused under GPL v2.0
Generate version numbers dynamically

This commit hooks the Makefile up to generate a FISH_BUILD_VERSION
symbol and kills off PACKAGE_VERSION in .cpp files.

It also modifies the tarball generation script to add the necessary
version file for releases.
configure.ac: generate the fish version number dynamically

Note that this will NOT get updated on every run - even if autoconf is run manually, the value may be cached. The PACKAGE_VERSION variable/symbol will not be reliable. Use FISH_BUILD_VERSION instead.
osx/config.h: define the FISH_BUILD_VERSION symbol
Makefile.in: don't build dist stuff from Makefile, use build_tools
tarball contents should match the filename
.gitignore: ignore tarball files
Fix ls command under Cygwin

It appears that dircolors -c under Cygwin has >&/dev/null at end that is
valid C shell syntax, but isn't accepted in fish shell.
Fix hostname command under Cygwin with Unicode characters

Yes, hostname is broken under Cygwin, but for fish it's an issue, as it
makes fish_config more buggy than it needs to be (by making UTF-8 errors
according to Python).
Ignore executable files

I commited executables in previous commit (removed using git push
--force - sorry, I wouldn't want to waste space in git repository), so I
think *.exe files should be forbidden to avoid any problems (there is no
reason to ever commit them)
Remove problems with fishd under Cygwin.

Yes, it's an awful hack, but IPC support (and fork support as well -
even FAQ mentions that, and suggests "restarting process" to solve the
problem (http://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures),
but let's ignore that for now) is simply broken in Cygwin. Having to try
to do exactly same thing in Cygwin, just so perhaps it will work is a
completely normal thing (not). I love Windows.
Don't mention chsh if it doesn't exist.

This is case in Cygwin, which doesn't have /etc/shells ans chsh.
Be quiet about "if" conditional.
Implement 'open' for Cygwin.
Implement 'help' for Cygwin.
Show drive letter under Cygwin

/c/c looks awful, and C:/ is simply better.
Show path containing current disk drive in Windows in title
Deprecate "." command. Fixes #310.

Needs documentation (for the new name), but manages to move . to source,
while preserving compatibility.
Document source command.