Move Article metadata extraction from generators to readers

There's no reason why this information should be Article-specific.

This commit breaks the other generators for the moment.  I'll fix them
shortly.
generators: Update PagesGenerator to use new read_file

Also standardize signal names.  If `article_generator_*` is singular,
`page_generator_*` should be as well.  Fix it from the older
`pages_generator_*`.
generators: Convert StaticGenerator to use the new read_file
Remove the FILES_TO_COPY setting

We no longer instantiate the Static object in the StaticGenerator, so
we can't set the save_as argument anymore.  If you want to adjust the
output path, use the upcoming EXTRA_PATH_METADATA setting.
docs: Remove FILES_TO_COPY
Add the EXTRA_PATH_METADATA setting

Useful for altering static output paths when you don't want to encode
extra metadata in the static file's source path.
Update sample configurations from FILES_TO_COPY to EXTRA_PATH_METADATA
contents: Static page no longer needs save_as override

Now that StaticGenerator no longer uses this option and users have
EXTRA_PATH_METADATA, drop this special handling to close the gap
between Static and Page.
test_readers: Update to new readers.read_file
test_generators: Replace CUR_DIR with CONTENT_DIR for subdirectory category detection
contents: Add settings fallbacks for Page
contents: Page fallbacks for context and localsiteurl
samples: Remove EXTRA_PATH_METADATA entries for pictures

I'd added them earlier to test that a configuration edit could
preserve the original output locations.  However, it is likely that
you have quite a number of static files, and we shouldn't recommend
listing explicit paths for all of them.  With this configuration
change, the pictures will be copied into the output directory using
their original relative path (e.g. `pictures/Fat_Cat.jpg` without the
`static`).  Any |filename|-style links will be updated automatically.
Pelican.run: Use keyword arguments when initializing generators

This makes it easier to add new arguments to Generator subclasses.
test_generators: Use keyword arguments to initialize Generators
generators: Remove wonky argument handling from Generator.__init__
generators: Add ContentGenerator subclass

This takes the heavy lifting our of ArticlesGenerator, PagesGenerator,
and StaticGenerator to ease maintenance and promote consistent
handling.
generators: Add content slugs in StaticGenerator for translation
pelican/themes: Update to follow ContentGenerator context changes

Most of the changes involved replacing `article`, `page`, and other
Page-subclass-specific names with the more general `content` name used
by ContentGenerator.

I also removed some trailing whitespace from
notmyidea/templates/index.html.
tests/output: Update test output with ContentGenerator changes

All of the changes are due to different ordering or whitespace
removal.