added pre and post function hooks

Hooks are synchronous and the return
value is ignored. In the future an Error
may be returned to "stop the graph" which
would be useful for pre/post conditions.

pre function signature is (input) where
input is an array of the arguments to be
passed to the fn (minus callback). `this`
is the `node` object for nodes and `graph`
object for the graph.

post function signature is (err, data)
same as the callback. `this` as in pre.