Fix Argument Forwarding. Closes #4.

Since we're forwarding to multiple callbacks we can't use perfect
forwarding. If the user passes an R-Value reference only the first slot
will have access to the value. Not good! This does mean extra copying
for value types but that's to be expected, if you want to avoid copying
use a reference type (just as you would normally).

As an optimization in the future we may want to use std::forward if
there is only one slot and on the last slot in the list. Might help out
if you're copying around expensive objects but really you should be
passing a reference for these types 99% of the time.