vim-patch:7.4.178

Problem:    The J command does not update '[ and '] marks. (William Gardner)
Solution:   Set the marks. (Christian Brabandt)

https://code.google.com/p/vim/source/detail?r=647e6bb15aa3f864eaf447fe77e3e3ae7e37b134
Implement `xstrdup` and `xstrndup`

Utility functions for copying strings to newly-allocated chunks. They either
succeed or exit the program.
Replace `strdup` calls by `xstrdup`
Implement os_microdelay and os_delay on top of it
Remove `RealWaitForChar` and `mch_new_shellsize`

The last occurrence of `RealWaitForChar` was replaced by the `os_microdelay`
function. `mch_new_shellsize` had an empty body, so there seems to be no reason
for keeping it around
Add comments and fix `os_microdelay` call
Remove unneeded variable `in_os_delay`

This variable only existed for the old SIGQUIT handler. Now it's no longer
necessary, especially when Neovim stops being a terminal program.
Simplify tricky preprocessor tests in ff_check_visited()
Remove simpler cases of OOM error handling (after *alloc calls)

By simpler cases I mean cases where the OOM error is not expected to be handled
by the caller of the function that calls `alloc`, `lalloc`, `xrealloc`,
`xmalloc`, `alloc_clear`, and `lalloc_clear`.

These are the functions that:

 - Do not return an allocated buffer
 - Have OOM as the only error condition

I took note of the functions that expect the caller to handle the OOM error and
will go through them to check all the callers that may be handling OOM error in
future commits.

I'm ignoring eval.c and ex_.c in this series of commits. eval.c will soon be
obsolete and I will deal with ex_.c in later PRs.
Add klib.h to src/lib

As decided on #434 [1].

[1] https://github.com/neovim/neovim/issues/434#issuecomment-39111868
[2] https://github.com/attractivechaos/klib
Implement xcalloc and use it in klist.h (use xrealloc as well)

Bonus: implement lalloc_clear and alloc_clear using xcalloc
Reimplement the event queue in event.c using klist.h

 - Add a new macro to klist.h: kl_empty()

   The whole point of abstract data structures is to avoid reimplementing
   common actions. The emptiness test seems to be such an action.

 - Add a new function attribute to func_attr.h: FUNC_ATTR_UNUSED

   Some of the many functions created by the macros in klist.h may end up not
   being used. Unused functions cause compilation errors as we compile with
   -Werror. To mark those functions as possibly unused we can use the
   FUNC_ATTR_UNUSED now.

 - Pass `Event` by value

   `Event` is such a small struct that I don't think we should allocate heap space
   and pass it by reference. Let's use the stack and memory cache in our favor
   passing it by value.
Turn Event into a tagged union

If we ever need arbitrary data or more than very few bytes on `Events` we just
have to add a `void *` field in the `data` union.
Use stdbool in os module
Added clint check for TRUE/FALSE
Implement job control

- Add a job control module for spawning and controlling co-processes
- Add three vimscript functions for interfacing with the module
- Use dedicated header files for typedefs/structs in event/job modules
Add BACKERS.md

List of Neovim backers provided by Bountysource
Format backers list
vim-patch:7.4.181

Problem:    When using 'pastetoggle' the status lines are not updated. (Samuel
            Ferencik, Jan Christoph Ebersbach)
Solution:   Update the status lines. (Nobuhiro Takasaki)

https://code.google.com/p/vim/source/detail?r=cb5683bcde03796baa7e845fd9a2fcaec3383538
Remove #ifdef FEAT_WINDOWS from vim-patch:7.4.181