vim-patch:7.4.237

Problem:    When some patches was not included has("patch-7.4.123") may return
            true falsely.
Solution:   Check for the specific patch number.

https://code.google.com/p/vim/source/detail?r=71b165a378ad580818f6d497ecf0f8ad054a9683
Use xmalloc() and xmemdupz() in file_pat_to_reg_pat()

Unfortunately there's still a case where NULL can be returned from
file_pat_to_reg_pat().

xmemdupz() and xmallocz() aren't static anymore. There are many use cases for
these function.
(verbose_)?try_malloc() to use on buf_write()

There will be more use cases for try_malloc(): see #556.

 - Reimplemented xmalloc() using try_malloc().
 - verbose_try_malloc() is just like try_malloc() but shows an out-of-memory
	 error message before returning NULL.
 - Let the compiler generate size>>1 assembly for signed types. We're not using
	 old compilers here.
 - Add proper function attributes to the new functions in memory.h
No OOM error condition in prep_exarg()
No OOM error condition in ga_concat_strings(), concat_fnames(), concat_str()

 - xmallocz() is not static anymore. There are many use cases for this function
	 in the codebase and we should start using it.
 - Simpler types in ga_concat_strings()
No OOM error condition in prt_build_cid_fontname()

 - Replace alloc() with xmalloc[z]() and remove unnecessary casts in hardcopy.c
 - Use xstrndup in hardcopy.c
No OOM error condition in save_patterns()
No OOM error condition in cs_make_vim_style_matches()

Even though cs_reset() never returns anything different of `CS_SUCCESS` I can't
change its return type to `void`. cs_reset() is used in the `cs_cmds` table.
No OOM errors in mb_str2wide, slang_alloc, open_spellbuf
No OOM error conditions in some functions of window.c

 - alloc_tabpage()
 - win_alloc_lines()
 - win_alloc_aucmd_win()
 - new_frame()
 - win_alloc()

TODO: don't handle OOM after calls to dict_alloc()
No OOM error in call_shell() and read_string()
No OOM error conditions in quickfix.c and regex_nfa.c

quickfix.c

 - ll_new_list
 - ll_get_or_alloc_list

regex_nfa.c

 - realloc_post_list -> EMIT -> nfa_emit_equi_class
 - nfa_regcomp_start

Use xrealloc() in realloc_post_list() (regexp_nfa.c)

  Test plan: force a call to realloc_post_list() for every use of the EMIT macro;
  open nvim and test regexp search.
Add FUNC_ATTR_NONNULL_RET to some functions
No OOM error condition in get_register() and yank_copy_line()
No OOM error condition in some ml_* functions

 - ml_add_stack()
 - ml_encrypt_data()
 - ml_updatechunk()
Remove OOM test in set_context_in_menu_cmd()
Use /2 and 2* instead of >>1 and <<1 which are tricky with signed types

Today's compilers generate shift instructions to perform division and
multiplications by powers of 2 [1]. `(x >> 1)` looks straightforward enough, but
if x is signed the code will fail when x < 0. The compiler knows better: use
`x / 2`.

That's why we have code like this:

    (long)((long_u)Rows >> 1))

instead of the cleaner version that generates the same or better machine code:

    Rows / 2

[1] http://goo.gl/J4WpG7
Add cast to unsigned to improve div by 2 in find_internal_func()
Remove mch_screenmode, inline EMSG into ex_mode()
Remove O_EXTRA which was only for EMX and cygwin.