Pipeline compilation, refactor clang, introduce grappalang

This is a large PR, so to make it easier to review...

Almost all the changes are just rewrite of clang.py, the c test environment, and new modules.

The minimal changes to code shared with other backends like myrialang are:
- algebra.py: fix two small bugs
- language.py: add a method that knows how to emit code bodies for a language
- `__init__.py`:  dispatch between two compile methods; call the above language method