Associate context with callbacks.

1. Add context object to method send, flush, remove, takeSnapshot.
2. Pass context object back to corresponding callbacks.
3. Add removed callback (corresponds to remove call).
4. Pass all the pending requests context back to user in recovering
callback to notify them the (possible)failed pending requests.
Merge pull request #199 from EasonLiao/context

Associate a context with request