URL as argument for BaseDatasource._filename_extension

Pass a URL to BaseDatasource._filename_extension() instead of
an election dict.  The more general case is that result
formats can differ, even within a single election, so it
makes sense to have a utility method to cleanly extract
the extension from any URL rather than just the first entry
in ``direct_links``.

Rename ``Datasource._filename_extension()`` in the Illinois
datasource to avoid changing the signature of the method on the
subclass.  In the case of Illinois, we can set the extension
of the standardized filename based soley on the election.