refactored extensions a bit

--HG--
branch : trunk
diff --git a/jinja2/parser.py b/jinja2/parser.py
index 4204c6a..27f54ef 100644
--- a/jinja2/parser.py
+++ b/jinja2/parser.py
@@ -35,7 +35,10 @@
         self.filename = filename
         self.closed = False
         self.stream = environment.lexer.tokenize(source, filename)
-        self.extensions = environment.parser_extensions
+        self.extensions = {}
+        for extension in environment.extensions:
+            for tag in extension.tags:
+                self.extensions[tag] = extension.parse
 
     def end_statement(self):
         """Make sure that the statement ends properly."""
@@ -686,20 +689,3 @@
         result = nodes.Template(self.subparse(), lineno=1)
         result.set_environment(self.environment)
         return result
-
-
-class ParserExtension(tuple):
-    """Instances of this class store parser extensions."""
-    __slots__ = ()
-
-    def __new__(cls, tag, parse_func):
-        return tuple.__new__(cls, (tag, parse_func))
-
-    def __call__(self, parser):
-        return self.parse_func(parser)
-
-    def __repr__(self):
-        return '<%s %r>' % (self.__class__.__name__, self.tag)
-
-    tag = property(itemgetter(0))
-    parse_func = property(itemgetter(1))