PyTokenizer_FindEncoding() always failed because it set the tokenizer state
with only a file pointer when it called fp_setreadl() which expected a file
path. Changed fp_setreadl() to use either a file path or file descriptor
(derived from the file pointer) to fix the issue.

Closes issue 3594.
Reviewed by Antoine Pitrou and Benjamin Peterson.
diff --git a/Misc/NEWS b/Misc/NEWS
index e393c06..3e77aa2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and Builtins
 -----------------
 
+- Issue 3594: Fix Parser/tokenizer.c:fp_setreadl() to open the file being
+  tokenized by either a file path or file pointer for the benefit of
+  PyTokenizer_FindEncoding().
+
 - Issue #3696: Error parsing arguments on OpenBSD <= 4.4 and Cygwin. On
   these systems, the mbstowcs() function is slightly buggy and must be
   replaced with strlen() for the purpose of counting of number of wide