Coffee can now autotune kernel variants

The main feature brought by this pull request is an autotuner, which can be turned on as one can expect:
```
parameters["coffee"]["autotune"] = True
```
If the autotuner is turned on, coffee will spend some time (order of seconds) trying to understand what's the best kernel implementation for a given form. It will try the usual optimizations, in combination with manual unrolling and loop permutation (i.e. the autotuner allows us to explore a much larger space of variants). 

We all also fix some bugs concerning code generation.
I don't know. I know ICC is a bit conservative at inlining, maybe GCC is not, so...until one tries, we don't know what's the best set of optimization flags for gcc