test: Move 'test/legacy' to 'test/functional'

Busted can only discover tests from a single directory. In order to allow tests
under 'legacy' to run as a functional test, it needed to be moved to
'test/functional'.
test: Add 'eval' functional helper

The eval helper transforms vimL expressions into lua tables, it's useful for
verifying function output.
test: Add some specs for the viml function `system()`

These new specs replace src/nvim/testdir/test_system
travis: Fix clang-asan to always display memory errors

Always check the logs in case of test failures(which would happen when ASAN
finds an error since it will abort Nvim).

Also run the 'oldtest' target from the gcc-32.sh script
eval: Fix `save_tv_as_string` to handle non-string types
wstream/shell: Fix memory errors caused by os_system

The os_system function uses a write callback to close the input stream when the
write completes, but this causes a memory error because the callback is invoked
right before the stream is freed by the caller.

This fixes the problem by removing the callback set by os_system. Instead, it
calls job_close_in immediately after writing(the stream will only close after
the write completes). The 'pending' parameter was also removed from the
'write_cb' as it should be hidden by the wstream module.

While the `wstream_set_write_cb` and `job_write_cb` are no longer used, they
will remain in the codebase for future use.
Merge pull request #1260 from tarruda/system-specs

Fix coverity defect(Resource leak) and add some specs which expose the bug to valgrind