Add a 'root_id' task option to track related canvas tasks

I know this still needs work (docs/testing), but I wanted to get a first impression of whether the approach looks good or not.

Also a couple questions I had during the implementation:
1.) Should the backend support this directly? At the moment I wrote a custom backend that uses current_task.request.root_id in order to save the extra field with my models without breaking the API.
2.) Should the signals callbacks support this? I could see it being useful, but again it could be API breaking so I left it out.