Remove `shorten_filenames` (dead code)
Test and refactor `shorten_fname` and `shorten_fname1`

Rename `shorten_fname` -> `path_shorten_fname`
Rename `shorten_fname1` -> `path_shorten_fname_if_possible`
garray: add unit tests

Only append_ga_line() was not tested because it relies on global vim state.
garray: refactor ga_grow

- xrealloc will call xmalloc if the input pointer is NULL, no need to check
  twice.
- use the early-quit idiom to decrease the indentation, which enhances
  readability.
memory: implement xstp(n)cpy

Both are implemented to POSIX 2008 spec, though I'm not sure I'm happy about
stpncpy's behaviour.
garray: reimplement ga_concat_strings with stpcpy

Less useless strlen(), stpcpy() is a more natural fit for this task.
ga_concat_strings() still has too much strlen() but that would be ugly to
remove for a function that's not used very often (just once in the current
codebase).
garray: implement ga_concat_strings_sep

A generalized version of ga_concat_strings that can handle any separator.
Reimplement ga_concat_strings on top of it.
garray: add unit tests for ga_concat_strings_sep
garray: make parameter of ga_concat_strings const
garray: refactor and optimize ga_concat

I've checked all uses of ga_concat in the codebase:

- ex_cmds2.c
- ex_getln.c
- eval.c
- message.c
- regexp-nfa.c
- term.c
- spell.c

None of them concats the garray with itself. This makes it safe to use the
faster memcpy() instead of memmove(). This change was also documented.
garray: comment and refactor a bit more

The following functions are affected:

- ga_remove_duplicate_strings
- ga_append
vim-patch:7.4.262

Problem:    Duplicate code in regexec().
Solution:   Add line_lbr flag to regexec_nl().

https://code.google.com/p/vim/source/detail?r=0ea551fa607dc443b97c2fba97dc0c9cb0bcf303
Updated comments in spell.h/.c to follow the style guide.
Call to list_append_number cannot fail.

Clean up the use of list_append_number and remove error checks.
Call to list_append_tv cannot fail.

Clean up the use of list_append_tv and remove error checks.
Call to rettv_list_alloc cannot fail.

Clean up the use of rettv_list_alloc and remove error checks.
Cleanup

* Remove unnecessary else
* Move variable declaration nearer to point of use
* Add missing curly brackets
* Comment style
Cleanup crypt.h/.c to follow the style guide.
Added crypt.h doxygen comments.
Changed variable types to fixed-size.