Add ir_loop to represent loops

This touches a lot of files because everything derived from ir_visitor
has to be updated.  This is the primary disadvantage of the visitor pattern.
diff --git a/ir_constant_expression.cpp b/ir_constant_expression.cpp
index e1073cd..a94b0fc 100644
--- a/ir_constant_expression.cpp
+++ b/ir_constant_expression.cpp
@@ -74,6 +74,7 @@
    virtual void visit(ir_call *);
    virtual void visit(ir_return *);
    virtual void visit(ir_if *);
+   virtual void visit(ir_loop *);
    /*@}*/
 
    /**
@@ -464,3 +465,11 @@
    (void) ir;
    value = NULL;
 }
+
+
+void
+ir_constant_visitor::visit(ir_loop *ir)
+{
+   (void) ir;
+   value = NULL;
+}