Fixed a bug with the loop context of a for loop if the iterator passed has a volatile `__len__` like the listreverseiterator.  `else` in inline if-expressions is optional now.

--HG--
branch : trunk
diff --git a/jinja2/parser.py b/jinja2/parser.py
index 1e43ed8..d365d4c 100644
--- a/jinja2/parser.py
+++ b/jinja2/parser.py
@@ -307,8 +307,10 @@
         expr1 = self.parse_or()
         while self.stream.skip_if('name:if'):
             expr2 = self.parse_or()
-            self.stream.expect('name:else')
-            expr3 = self.parse_condexpr()
+            if self.stream.skip_if('name:else'):
+                expr3 = self.parse_condexpr()
+            else:
+                expr3 = None
             expr1 = nodes.CondExpr(expr2, expr1, expr3, lineno=lineno)
             lineno = self.stream.current.lineno
         return expr1