Split code for counting and parsing arguments
Extract `shell_skip_word` from `mch_call_shell`
Extract `shell_count_argc` from `mch_call_shell`
Make `extra_shell_arg` a `mch_call_shell` parameter
Extract `shell_build_argv` from `mch_call_shell`
Refactor/cleanup argument parsing functions
Refactor SHELL_* defines into enum typedef

The SHELL_* defines are the bitflags that can be passed to `mch_call_shell`.
The enum is defined in 'os/shell.h', where all shell-related functions will
eventually be defined.
Update `call_shell` signature to use `ShellOpts`
Rewrite `show_shell_mess` as a `ShellOpts` flag
Add doxygen comments to the functions in shell.c
Fix shell.{c,h} comments to match the style guide
Inline ga_init()
Rename ga_init2() to ga_init()
func-attr: clang 3.5 doesn't support alloc_size

The attribute was removed in commit c047507 in the clang repository as it
was never properly implemented anyway. This fixes compiling with clang 3.5.

Fixes issue #429
func-attr: add some extra handy function attrs

The attributes in question are:

- nonnull: specify whether a function argument cannot/may not be null
- returns_nonnull: specify whether a function will not return a null
  pointer (example: xmalloc can't return null, so it should be annotated as
  such). Only available from gcc 4.9 onwards.

Currently these attributes are only supported by gcc.
alloc: xmalloc and xrealloc can't return null

With this annotation/function attribute, we can inform gcc that these
functions never return null, which can save a lot of redundant null checks.
Remove feature HAVE_QSORT

qsort conforms to C99, so we don't need our own version.
remove HAVE_SETJMP_H
remove HAVE_ERRNO
remove HAVE_BCMP