Refactor demos to optionally use Firedrake FFC interface

* By default, read canned kernels from disk
* If -f is given, generated kernels via Firedrake's FFC interface
* If -f -u is given, update the generated kernels
* Kernels are stored as pickled AST to be backend independent
Add a regression test for adv_diff_nonsplit demo
Remove FFC interface
Remove compatible FFC version