Expansion of library

I added a couple of functions described in some of the Yale Haskell group's papers on AFRP, including ```(&&&)```, ```(***)```, ```first```, and ```second```, which all were missing from the original library. I also added in ```before``` (a backwards ```andThen```) and ```reduceWith```, which seemed like a logical addition. 

I also added in documentation for ```loop```, and changed ```hiddenState``` to resemble the type signature of ```loop```