Languages refactoring

This is done now and working.

We now have ``codegen.languages`` being specific to language, and not to runtime code compilation/execution. We also have a new ``codegen.runtime`` package which is specific to runtime compilation/execution. The way it works is that you create a ``CodeObject``, and this defines its own ``Language``. There are also new preferences:

* ``codegen.target in ['numpy', 'weave']``
* ``codegen.languages.cpp.*``
* ``codegen.runtime.weave.*``

I suggest we merge this quickly assuming it works OK for you (it seems to be fine for me). It can be automatically merged but will probably cause some difficulties for other branches since it touches quite a few files.