Use the clang 3.4 release tarball instead of apt for clang 3.4.

It appears the llvm.org/apt/ repository isn't always reliable.  So let's
use the release tarball instead.  Also, make using 3.4 conditional, so
we can use the clang 3.3 if things still manage to go awry in the
future.  Note: using 3.3 means that we won't get leak detection.

I left the logic for using llvm.org/apt/, just in case we want try using
it again sometime.
Force the `cmake` target to re-run the CMake configuration.

This makes it more handy when files are added or removed from the source
tree.  A simple `make cmake` will re-configure and pick up the change.
update readme: "progress" section; formatting
xmalloc() that succeeds or gracefully aborts
Avoid a seg fault when exiting after OOM error

I'm debugging OOM behavior using http://www.nongnu.org/failmalloc/ on Linux.

gdb environment:

```
set env LD_PRELOAD=libfailmalloc.so
set env FAILMALLOC_SPACE=0xF00000
```

SEGV was happening like this:

```
Starting program: /home/felipe/code/neovim/build/bin/nvim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Vim: Error: Out of memory.

Program received signal SIGSEGV, Segmentation fault.
0x00000000004d3719 in getout (exitval=1) at
/home/felipe/code/neovim/src/main.c:836
836       if (*p_viminfo != NUL)
(gdb)
```

After the fix it works as expected:

```
(gdb) set environment LD_PRELOAD=libfailmalloc.so
(gdb) set environment FAILMALLOC_SPACE=0xF00000
(gdb) r
Starting program: /home/felipe/code/neovim/build/bin/nvim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Vim: Error: Out of memory.
Vim: Finished.
[Inferior 1 (process 21505) exited with code 01]
(gdb)
```
Document xmalloc() and deprecate lalloc()
xrealloc(): similar to xmalloc()

Replaced all calls to realloc by xrealloc. All `== NULL` tests can be removed
and the code within `!= NULL` tests can be unwrapped.
Add basic Doxyfile.
Add doxygen-style comments to functions from os/fs.c.
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
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.