add semi-portable looping using fsnotify

generic defaultLoopRender for use in Backends

See matching branches of `-cairo` and `-rasterific`.

This seems to work well on Linux.  It works some of the time on Windows; other times `fsnotify` seems to not register a change, or the program compiles and runs an older copy of the source file.  Please don't merge until I have spent more time debugging that.

I'd appreciate if someone could test this on a Mac.  The `-rasterific` branch should be fine.  My test program is:
``` haskell
import Diagrams.Prelude
import Diagrams.Backend.Rasterific.CmdLine

dia :: Animation B R2
dia = c <$> ui where
  c t = circle 1 # fc (blend t white green) # pad 1.01

main :: IO ()
main = mainWith dia
```
- compile test program
- run as ./Animation -w 400 --fpu 5 -o animTest.png -l
- edit source file at least twice to trigger recompilation 
(there were some earlier bugs where it would recompile after the first edit, but not again)

The two `let` lines are just reformatted, but there's a significant change before and after.  Sorry about that.  

Instead of getting `mainRender` implicitly from the `Mainable` instance, the first argument is a rendering function.  This lets me write a `defaultAnimMainRender` that doesn't know anything about looping, and a `defaultLoopRender` that doesn't know anything about animations, at the expense of longer `Mainable` instances.  (See line 269 of  https://github.com/diagrams/diagrams-cairo/commit/ec32e9a3bc3ea487bc49257bd94c5285480fb38a) I like the modularity, but I could be convinced to use the approach in https://github.com/diagrams/diagrams-lib/pull/195 instead.