all unittests pass, the special and dependency lookups have their own visitors now, with `self` one can get a reference to the current template and render blocks multiple times.

--HG--
branch : trunk
diff --git a/jinja2/filters.py b/jinja2/filters.py
index 801b350..c4c108e 100644
--- a/jinja2/filters.py
+++ b/jinja2/filters.py
@@ -581,8 +581,7 @@
     in common.
     """
     expr = lambda x: environment.subscribe(x, attribute)
-    return sorted(map(_GroupTuple, groupby(sorted(value, key=expr), expr)),
-                  key=itemgetter('grouper'))
+    return sorted(map(_GroupTuple, groupby(sorted(value, key=expr), expr)))
 
 
 class _GroupTuple(tuple):
@@ -590,6 +589,9 @@
     grouper = property(itemgetter(0))
     list = property(itemgetter(1))
 
+    def __new__(cls, (key, value)):
+        return tuple.__new__(cls, (key, list(value)))
+
 
 FILTERS = {
     'replace':              do_replace,