Added arguments to be passed to waterfall to be passed to first function

For consistency reasons, I would like to be able to supply initial arguments to waterfall to be passed to the first function in the list so that things can be passed so subsequent functions.  
This still works with existing usage models including supporting the optional callback.  If the last argument in the list of args is a function, then it treats that as the callback.  

All unit tests pass. I added an additional unit test to ensure the 1st argument(s) hop works as expected.