Made hmac signature source more flexible with an additional optional parameter. 

Hey Dave, we kicked around a few implementations and this looked like the simplest non-breaking change that would get the job done. Also have included a few new tests.