Fixing a bug resulting from misuse of `ln`.

`ln` treats a symlink that points to a directory as the target directory and
creates a new symlink in that directory instead of replacing the existing
symlink itself. I had to use the '-h' flag to stop this from happening.
Making the install script more modular

It was hard to figure out which part of the script was doing what. Splitting up
the install script into functions was the logical thing to do.

In the process, I found some mistakes in the structure of the script related to
the creation of the 'install_dir'. Next step would be to fix that.
Fixing presence of globstar for older bash

When I allowed the install script to be run by an older bash, I didn't account
for the globstar because the older versions of bash didn't throw an error. But
the globstar (**) is not recognized by older versions of bash (< 4.0.0). This
led to some subtle errors in the detection of files based on globbed paths.

The change to `find` makes the install script compatible with older versions of
bash.
Refactoring os-dependent code

Vim needed to use the os-dependent code as well. So it made sense to refactor
it out.

I still need to figure out the copy-paste issue with vim on headless linux
instances. Tmux's copy and paste works just fine on the same linux instances
though.
Removing reattach-to-user-namespace from dot-files

I got the sense that it didn't belong here. Most of the flexibility that I need
with dot files comes on unix environments where reattach-to-usernamespace is
not an issue. I can install reattach-to-usernamespace through homebrew on OS X.
Providing a nice init function for install script
Using vimdiff as the git mergetool