Start writing the IR
Support more types (assign, decl). Code refactoring.
Extend the ast hierarchy
Add FunCall node. Minor fixes.
Added support for function and fraction nodes.
Add support for function nodes. Extend code generation
Extend the ast for supporting more AVX intrinsics
Add AST support for preprocessor's directives
Change the ffc interface to get an ast and gen C
Change superclass' constructor calling convention
Refactor the AST hierarchy
Re-insert static inline qualifiers for host kernels
Bump PyOP2 FFC compatibility version to 0.4.
Replace util dict by utility lambda functions
Merge pull request #269 from OP2/pyop2-ir

PyOP2 Intermediate Representation

The key feature added is the possibility of generating an AST of the
tabulate_tensor function that can be manipulated by PyOP2. When the -f
pyop2-ir options is passed in, FFC will generate such an AST rather
than a string of C code. This is achieved in two steps:

1. FFC's Symbols are enriched with an attribute (loop_index) which
tells the loop dimension(s) along which a symbol iterates. This
information is exploited to construct proper PyOP2 symbols.

2. The code generation stage of PyOP2 is "mirrored" in a different
module (quadraturepyop2ir), with the key difference being that an AST
is constructed and returned (rather than a string of C code).

Future modifications to the code of the tabulate_tensor function
should be made in quadraturepyop2ir, rather than quadraturegenerator.

The C code generated traversing the AST is (must be) semantically
equivalent to the code generated by quadraturegenerator.