Merge from trunk:
* Make strand destruction a no-op, to allow strand objects to be destroyed after their associated io_service has been destroyed.
* Use the __thread keyword extension when compiling with gcc on linux x86.
* Avoid calling work_finished() if a completion handler creates more work.
* Eliminate redundant call to call_stack::contains(this) when dispatching a completion handler.
* Add support for some newer versions of glibc which provide the epoll_create1 function but always fail with ENOSYS. Fixes #7012
* Use SSE2 load and store fences.
* Throw exception if SSL engine initialisation fails. Fixes #6303
* Fix another regression in buffered_write_stream. Fixes #6310
[SVN r79549]