Datalog: expressions in IDB head

1. previously `A(a+b) :- R(a,b)` would fail spuriously (i.e. silently do the wrong thing)
2. changed grammar/model to allow for this syntax (I need it for things like pagerank anyway)

Additional changes:
3. updated datalog model to create Apply instead of Project in all cases 
      ( I believe this sort of change was made in MyriaL awhile back? )
4. updated clang & grappalang to use these more expressive Applys
5. changed boolean expression compilation to general expression compilation. This is to accommodate Apply expressions. Other than clang/grappa, this should only have been a rename refactor in pseudocodelang and pythonlang.

Notes:
Out of laziness (or minimal-ness), I've only allowed the head to contain restricted kinds of expressions (see datalog/grammar.py). When needed, this should be extended to more general expressions