nsqd: add message delegate

I'm not sure if this is the best place to put these changes, but I thought I'd throw this up as a starting point.
as a complete aside, stylistic comment, it might be simpler to just default `msg.Delegate` to a "dummy delegate" so that you don't have to do all these `nil` checks...