Extract path.c from misc1.c
Move remove_duplicates to garray.c
add func_attr.h to be able to use func attribs

Currently enables these for every gnu-like compilers, i.e.: gcc, clang and
icc.
use function attributes on allocation functions

This should allow gcc/clang/icc to generate better code and clarifies
function intent.
Re-integrate FEAT_SIGNS code, close #383

- omit FEAT_NETBEANS_INTG and FEAT_SIGN_ICONS
- omit FEAT_GUI blocks
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