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.
Is this only required for Intel? What's the equivalent gcc flag or is it not necessary for gcc?