Builder now watches output from two threads

One thread for stdout and another for stderr, everything synchronized by a
Queue object which handles the mutual exclusion.

Implemented a way to let the main thread know that a threaded task is
ready by using an external vim instance and sending --remote-expr from
there. It works great and solves the issues seen when calling vim
functions (including Python's print) from another thread. This does have
the disadvantage of spawning a new process (which ends immediately) per
notification but I can't think of a different way to do it since there's
no timer system in vim or an event loop. If I find (or the devs implement)
a better way to do this I'll change it but in the meantime this approach
works perfectly and there's no noticeable performace hit.