Improve handling of URL identifiers and file extensions.

Instead of indiscriminately appending non-query identifiers to the URL, replace
the file extension if the identifier represents an alternate extension.  An
identifier is considered to represent an alternate extension if the strings
starts with a `.` character.  Also, prevent duplicate characters if the
path and identifier both end with `/`.