allow "fake" filenames in findsource (closes #9284)

This allows findsource() to work in doctests.

A patch from Dirkjan Ochtman.
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 4899cbf..bb46ea6 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -518,9 +518,13 @@
     or code object.  The source code is returned as a list of all the lines
     in the file and the line number indexes a line in that list.  An IOError
     is raised if the source code cannot be retrieved."""
-    file = getsourcefile(object)
-    if not file:
+
+    file = getfile(object)
+    sourcefile = getsourcefile(object)
+    if not sourcefile and file[0] + file[-1] != '<>':
         raise IOError('source code not available')
+    file = sourcefile if sourcefile else file
+
     module = getmodule(object, file)
     if module:
         lines = linecache.getlines(file, module.__dict__)