move linux-specific main to target directory
attach definition inputs/outputs, start/end nodes to CDFG

- add type information to outputs (defined, not computed)
- add `compiled` flag to definition
add `data_predecessor` to CDFG

finds the node that supplys the data for a given node
ChoiceNode tracks recursion information

`jump` contains information if a choice node is used for recursion
or simply for testing
some debugging/compile log improvements
track if/else branches during choice node child node elaboration
retain stack tracked wrong branch, fixed
Specialize JoinNode into IfJoinNode and LoopJoinNode

These are pretty easy to distinguish, and have completetly different
purposes.
too much edges in data flow graph for backwards jumps, fixed
make nodes available in CDFG
simplify adding CompiledCalls and CallResults

- attach effect output to CallResults
- make CompiledCalls a bit smarter to get rid of adding ports manually
add control successor to each node

Don't need to look up the edge every time.
data_predecessor -> data_predecessors

in case of phi nodes or data feedback, nodes can have more then one
data input
some doc
convert parser slices to strings early on

Fixes a couple of string comparison bugs, since Parslet::Slice's are not
equivalent to strings only because their characters match.
initial of `c_emitter`, incorporate into :compile_all task

MFactor::CEmitter takes a Definition and emits c code based
on the CDFG of that definition.  Takes care of builtins.

TODOs:
- do-while constructs not emitted correctly
- return value emission
- phi node removal