only re-parse a file if its mtime changed

maintains a single IORef Map lookup of files to their mtime
I would have liked to have an IORef for each file instead,
but I didn't know how to pass an IORef into shakespeareRuntime
while in TH land.

Rather than using system-fileio,
I tried using the getModificationTime function in directory.
Unfortunately, the type changed between directory 1.1 & 1.2
Trying to use directory 1.2 caused major installation issues.
So using directory would probably require supporting both versions.
Using system-fileio made for a very simple installation.