Make it work with GHC HEAD

It looks like GHC HEAD does some additional transformations similar to the full laziness transformation (or it doesn't properly disable the full laziness transformation), that prevented the IORefs to be recreated every time.

This patch adds a function `unsafeNewIORef` that has a dummy parameter to force recreation of the IORef, even in presence of the full laziness transformation. Additionally the upper bound for `base` is bumped, since HEAD ships with `4.7.0.0`

I've done some basic tests and it seems to work with the latest HEAD snapshot and with GHCJS now. Perhaps there are still some problems with finalization if that also depends on similar things.