readers: Instrument read_file to return Content objects

The assorted generators all use read_file() to read in the file
contents and metadata.  Previously, they sometimes parse additional
metadata, fire off signals, and initialize a pelican.contents.Content
subclass on their own.  We can reduce duplicated code and increase
consistency by shifting all that stuff into read_file() itself, and
this commit is a step in that direction.
readers: Add debugging logging to read_file
readers: Log signal sending for read_file()
signals: Sort signals into categories
signals: Add missing signals

Note that the `pages_*` names are plural , while the `article_*` names
are singular.  I'll fix this once I update the PagesGenerator.
signals: Fix *_generate_* signals -> *_generator_*

For example, article_generate_preread is now article_generator_preread
for consistency with the other preread and context signals.
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
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
plugins.summary: Don't require plugin-specific settings keys

The settings dictionary may be agnostic on some plugin-specific
settings, and the plugin shouldn't die if the keys are missing.  For
example, pelican.tests.test_readers.ReaderTest.read_file() uses an
empty settings dict by default.
plugins.summary: Don't summarize static content
content: Don't update static content