move a bunch of code around

hoping to make it easier to put into a library later.
also preparing to rearrange the CodeFrame stuff
move all instruction code into instruction.cpp

this will make it easier to put into a library in the future
also queued up a lot of rewrites around the CodeFrame scheduling
first pass at switching to CallNode structures

and away from CodeFrame stuff. this is in preparation for adding c calls
and io calls to the call tree, just like regular qbrt calls
another checkpoint in rewriting CodeFrame objects

move WorkerCContext to instruction.cpp
implement a few more methods in new CallNode object heirarchy
remove the CodeFrame related objects

replacing them with the CallNode related objects
get rid of OpContext classes

CallNode classes now handle all that stuff. all C functions and
opcode executioners just take a Worker now. pretty much everything else
can now be accessed via Worker->current pointer to the current CallNode

failure creation specifically all moved into CallNode
everything is generally much simpler now
fix cfunction calls to work again

hello world is finally restored to full working order. need to make
io calls work more like ccalls now. just add them to the call tree
and put the leaf in an i/o queue.
rewriting file IO functions using libuv

also removing old epoll and IO code
add an fs module for file stuff
add a file_hello.uqb program to test file opening and writing
fix many bugs in file i/o and scheduling

still need to fix issue with application thinking it's time to quit and
cutting out prematurely
fix bug with application not terminating properly

it now checks correctly for waiting calls before deciding to end
initialize workers in a loop

handy for when we don't know the number of processors at compile time :-P
set call state in more C functions
remove Worker field from ProcessRoot

the dependency shouldn't have to go that direction
use libuv to find cpu count

can now initialize the correct number of workers
remove ProcessRoot structure

this thing was kind of unnecessary. this does break channels for a bit
though until they're switched to be stored in variables
reorder CallNode so it's after the call classes

this is a little easier to read and follow now
no code changes, just moving things
rename CodeCall to be FunctionCall

no other code changes, just this rename. Always wanted it to be called
this, but needed to call it something else because there used to be a
different FunctionCall type
fix bug in call tree management
remove the result parameter from c_function type

this variable is already easily accessible from the worker so just get
it from there instead
fix crash when setting failure w/ no c filename

now the failure event code checks for a null c filename before setting it