Updated extends node to keep a unique history per loader.
Updated the filesystem and app loader error handling.

The IOError check is broader than it needs to be. This now reraises
the exception if the error is something other than the file not
existing.
Updated template loader api.

This simplifies the previous api and improves performance.

* Added get_template_sources to the egg and cached loaders

  This yields all possible matching templates that the loader provides
  for a given template name.

* Added get_internal

  This is called by Loader.get_template. Given a template source, it
  tries to return the template contents. If the source does not exist,
  a TemplateDoesNotExist error is raised.

* While extending, if a source template doesn't exist and a skip argument
  is provided, the source is added to the skip variable. This way, for
  multiple extends statements, the loaders won't try to re-process a
  template we know doesn't exist.
 Fixed origin.reload to show correct error.

I'll need to add tests for this and for an old-style template loader
as well.