job: Let job_start callers to selectively ignore stdio

Passing NULL as the callback for stdout/stderr will result in job_start ignoring
stdout/stderr, respectively. A 'writable' boolean argument was also added, and
when false `job_start` will ignore stdin.

Also, refactor os_system to allow passing NULL as the `output` argument.
shell: Rename dyn_buffer_t to DynamicBuffer

To follow our coding conventions
job/shell: Refactor os_call_shell to use os_system
Temporarily increase maximum number of jobs to make test pass

Previous commit is causing a test fail because job_wait does not properly
remove jobs from the table. Temporary workaround until it is fixed