maximum recursion depth exceed in "pisaLoop" and "pisaPreLoop"

This fix prevents maximum recursion depth when the two methods ("pisaLoop" and "pisaPreLoop") are called.

If you want reproduce this error, try the following code:

    import cStringIO
    table = '<table><tr><th>Header</th><th>%s</th></tr></table>'
    for x in xrange(7):
        table = table % table
    table = table % 'Test'
    template_file = cStringIO.StringIO(table)

If nothing happen increase the "xrange".


Small improvements/optimisations:
- Cache "pisaTag*" objects
- Removed "path", not used, only for debug
- Speed up some CSS attributes validations