generators: Cleanup *_SAVE_AS naming for direct templates

I have a `calendar.ics` template, and I don't want it to be saved as
`calendar.ics.html`.  However, I can't put:

  CALENDAR.ICS_SAVE_AS = 'calendar.ics'

in my Pelican configuration, due to the illegal `.`.  This commit
replaces some of these illegal characters (extend as necessary) with
underscores, so I can use:

  CALENDAR_ICS_SAVE_AS = 'calendar.ics'

Alternative approaches include:

1. Use the EXTRA_PATH_METADATA framework from readers.path_metadata.
   I didn't do this because it's possible that files in the content
   directory will have the same location as directly rendered
   templates.  Adding a new namespace under EXTRA_TEMPLATE_METADATA
   would work, although in either case you'd need a new
   DIRECT_TEMPLATE_SAVE_AS pattern to use the new metadata to
   construct the target filename.

2. Use the full source template filename, not the given name + '.html'
   when constructing the default target filename.  This would probably
   require altering Generator.get_template to return the successfully
   loaded name, unless that information is stored in the template
   instance itself (I'm not familiar enough with Jinja to know off the
   top of my head).  Check this before merging this branch.

While (2) would handle my particular case, adding something along the
lines of (1) would provide more flexibility to future users.  It's
probably a good idea to drop this patch and do both (1) and (2).