Add better handling for git completion

Because I used > in setup it would create empty files/files with useless stuff
which would then confuse bash when it sourced them.

Added a bunch of comments as well to be more clear about what is going on
Don't setup screenrc by default
Remove push.default = simple

This causes problems with older git and isn't that great anyway
Change push.default again

Git informs me I should set it to something because the default is changing to
I'll use 'current'.

It's my understand that this is less safe than simple but is more backwards
compatible.
Remove nullglob and silence globstar
setup.sh can now run specific setups

Moved all the specific functionality to functions.

Probably should change it to setup.d and have scripts and then run specific
ones and then bblah blah overcomplicated.
Update git completion automatically

Instead of having me decide git should be updated, the command now keeps track
of the version I've downloaded and checks that against the version of git
installed.