mesh as function parameter w/o [],[:],[::] syntax

To do this we need to be able to codegen before we know the
rank of the mesh, because of this we need to generate all 3
nested loops for forall/renderall if we need them or not.

This also requried some changes to the width(),height(),depth()
and rank() builtins. height(), and depth() now return 1 rather
than zero if the dimension does not exist.
more work on mesh as function parameter, C function prototypes now working
Merge branch 'overhaul' of darwin:scout into overhaul