Added docs for prepare, check, idle, async, signal and pipe

Moar shall come
`before_loop_and_idle` seems like a confusing name, especially since it doesn't actually imply the loop is idle.

What idle actually does is causes the I/O part of the loop to never block and essentially busy-loop the CPU.  You never want to use idle hooks except for short periods of time.  For example, luvit uses idle to implement `setImmediate` https://github.com/luvit/luvit/blob/luvi-up/app/modules/timer.lua#L112-L122