Log the names of tasks to the log file (now contains thread_name:task_name}
Allow fc::canceled_exception to pass through places where we were catching and ignoring all fc::exceptions
When locking a mutex, ensure the task has a context before attempting to lock.
When a task is canceled while blocking on a mutex, fix the code that removes it from the mutex's block list to null out its "next" pointer, which is assumed to be null whenever not blocked on a mutex
Import thread/task_specific variables
Allow the user to supply a reason string when canceling a task (useful for debugging)
Merge branch 'log_task_names'
Change fc::canceled_exceptions thrown due to a socket operation being canceled into regular fc::exceptions -- we're reserving canceled_exception for canceling async tasks
When reusing a context, re-initialize most of its fields.  This fixes at least two errors:
 - we were canceling tasks that hadn't been canceled, because the canceled flag was left set to true and the next task assigned to the context then became canceled as soon as it yielded
 - we were resumeing blocked tasks before they should have resumed, because their blocking_promises list wasn't cleared and they were unblocking because the erroneous promises were fulfilled
As a debugging aid, we also record the cancellation reason whenever a task is canceled, and include that in the canceled_exception (this is only enabled in debug builds)