Tests to elucidate extern func misbehavior

Turns out externs weren't working if called but could be optimized
away by FPM.AddInstructionCombiningPass() or FPM.AddGVNPass() and
thus appeared to somewhat work.

The problem was rectified by changing the execEngine creation from
NewExecutionEngine(m) to NewJITCompiler(m, 0) with
InitializeNativeTarget(). Should be the next commit.
Properly calls external functions

See prior commit for more details.
Updated test.k to reflect fully working extern calls
Added demos for custom, callable C & Go funcs
Added support (& tests) for user-defined binary operators
Added extern fmt.Printf example in addition to the C.putchar version
Added support for user-defined unary operators
Existing variables now live on stack (road to mutability)
Assignment operator
Assignment tests
Added support for user declared, mutable variables

N.B. For-loops appear to have been broken since we removed the PHI node.
Fixed for-loop bug

The implimentation seems to be equivalent to the C++ tutorial.
However, the behavior is more like a do-while than a normal for,
and some example code from the tutorial is slightly off (see edit
to fibi) if my for-loop's behavior is correct. (See fibi(x))
Added example program to plot Mandelbrot set
Updated README.md