factorize code
rename Pure.hs to IORef.hs
make the IORef implementation of Locker behave like the GHC one
move backends to a subdir
don't duplicate the code of Data.Unique, just import it