PyOP2 Intermediate Representation

We add the ast_base module, located in the separated folder IR (which will contain all modules that read and manipulate the intermediate representation of a kernel), which is basically a hierarchy of classes to represent Abstract Syntax Trees of kernels. 

AST classes, at the present moment, can be used to represent a subset of the grammar of the C language. For example, currently there is no support for conditionals.

We make use of polymorphism for generating C code. The generatecode() method of a node N can be used to print out the C code representing the tree rooted in N.

The ffc_interface module has been modified to get an AST from FFC rather than a string of C code.

Finally, we fix a subtle bug related to linking to the right JIT-compiled kernels when using host back-ends by adding the static qualifier to the signature of a kernel function.