memory: xstrchrnul and xmemscan.
memory: memchrsub and strchrsub
vim-patch:7.4.247

Problem:    When passing input to system() there is no way to keep NUL and
            NL characters separate.
Solution:   Optionally use a list for the system() input. (ZyX)

https://code.google.com/p/vim/source/detail?r=v7-4-247

Implement write_list_to_string() as well since write_list() only works
on files.
vim-patch:7.4.248

Problem:    Cannot distinguish between NL and NUL in output of system().
Solution:   Add systemlist(). (ZyX)

https://code.google.com/p/vim/source/detail?r=v7-4-248
Return list from rettv_list_alloc.
vim-patch:7.4.256

Problem:    Using systemlist() may cause a crash and does not handle NUL
            characters properly.
Solution:   Increase the reference count, allocate memory by length. (Yasuhiro
            Matsumoto)

https://code.google.com/p/vim/source/detail?r=v7-4-256
Old-style test for system(list).
Fix system() output truncation bug.

Replace NULs with SOH to restore the old behaviour of get_cmd_output().
Implement save_tv_as_string to assist in #1176.