[WIP] vim-patch:7.4.276

Neovim already has two pull requests for this patch: #841 and #773 by @euclio, the original author of the vanilla patch. It adds support for the fish shell. Without patch 276, fish users can only use plugins like syntastic if they have, in their .vimrc, `set shell=sh` or something similar.

I wasn't quite sure what to do with this for a while.  At first, I branched off of his patch and appended commits until it worked: https://github.com/splinterofchaos/neovim/tree/fish-patch. I found that travis kept failing it due to a memory leak introduced by [276](https://code.google.com/p/vim/source/detail?spec=svna6b59ee633a355095e6473ec5e2a7d9088bfb853&r=a6b59ee633a355095e6473ec5e2a7d9088bfb853) and solved by [297](https://code.google.com/p/vim/source/detail?r=81f5a056b2a582c8109da10cc538dc16a326a34d). 

So it seemed more logical to avoid the allocation altogether thus making 297 moot. Since neovim has `path_tail()`, I piggy-backed off that than implement `get_isolated_shell_name()`. The new `path_tail_save()` does the exact same thing, though I wondered if others might find it weird that it works for program invocations as well.
If we will use vim's `get_past_head` implementation for Windows:
```c
    char_u *
get_past_head(path)
    char_u  *path;
{
    char_u  *retval;

#if defined(MSDOS) || defined(MSWIN) || defined(OS2)
    /* may skip "c:" */
    if (isalpha(path[0]) && path[1] == ':')
	retval = path + 2;
    else
	retval = path;
#else	/* Unix */
    retval = path;
#endif

    while (vim_ispathsep(*retval))
	++retval;

    return retval;
}
```
then change proposed by me will alter behavior only on examples like `c:`, with `get_past_head` we will get pointer to the `NUL` character, without - to `c`. In cases where we have path like `c:\some\path`, our loop below will do the all work.
Though I'm not have very strict opinion on what would be the best choice in this case, so I think you can leave it as it is if you want.