WIP: proxy

Convert alcove to a select loop. Each process can call the commands.
fork(2) and clone(2) are now just commands.
Tunnel messages between forked processes

Begin layering headers so messages can be passed from:

    Erlang -> port -> child -> child
clone: increase the stack size

Increase the stack size. The child process would segfault when
allocating memory for the message.

Free the allocated memory in the parent. If the user calls clone/2,3
with the CLONE_VM flag, bad things will happen.
Fix tests
setrlimit: pass tuple to port

To be consistent with getrlimit, take a tuple representing the struct
rlimit as an argument.
Support multiple processes

Modify the message format to include the PID. Tests pass but requires
much more work. The message format is now:

* erlang -> port: make a call

    2:ALCOVE_MSG_CALL
    2:call
    *:arg

* port -> erlang: call results

    2:ALCOVE_MSG_CALL
    *:arg

* erlang -> port: write to child's stdin

    2:ALCOVE_MSG_CHILDIN
    4:pid

* port -> erlang: write from child's stdout

    2:ALCOVE_MSG_CHILDOUT
    4:pid
    *:data

* port -> erlang: write from child's stderr

    2:ALCOVE_MSG_CHILDERR
    4:pid
    *:data