Append to CMAKE_PREFIX_PATH instead setting it outright.

Also, don't set it in the FindXxx cmake scripts--it's unnecessary, and
it resets the value.
Drop the deb-src for clang.

The llvm.org/apt repo currently has an issue with the source packages,
and we don't need it on Travis anyways.
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
Move signal handling to libuv event loop

This removes all signal handling code from os_unix.c to os/signal.c. Now signal
handling is done like this:

- Watchers for signals are registered with libuv default event loop
- Any signals received in `event_poll` will push corresponding `Event` objects
  to a queue
- `os_inchar` will eventually return the special key `KE_EVENT`, which is a
  instruction for vim to drain the previously mentioned event queue and execute
  the associated handlers.

The reason signals aren't handled directly in the libuv callback is to avoid
recursion in the event loop(which isn't supported by libuv).

The same principle used here will apply to other events in the future.