Port libcork to FreeBSD

This patch should work for any 4.3 Net2 code base or newer, but we
are only testing on FreeBSD.
Change working directory before exec

You can now change the working directory that a program will be executed
in.  Instead of adding more parameters to the cork_subprocess_new_exec
function, we now have a separate cork_exec type.  Its constructor takes
in the `program` and `params` parameters.  You must set any other
properties by calling setting functions.  You can execute the cork_exec
program directly in the current process by calling the cork_exec
function.  Like the `exec(3)` family of functions, cork_exec never
returns (unless there's an error starting the program).  The
cork_subprocess_new_exec function translates the cork_exec instance into
a cork_subprocess, which will start the program in a separate
subprocess.