Asio cray support

This update allows asio to work with the Cray C++ compiler.    Cray C++ defines __GNUC__ and for the most part implements the gnu extensions to C++.  What Cray C++ does NOT do is support inline assembly code.  This update addresses this shortcoming of Cray C++ in asio.

cray_fenced_block.hpp is based on gcc_x86_fenced_block.hpp, but uses the __builtin_ia32_sfence and __builtin_ia32_lfence intrinsics, to avoid use of inline assembly in the implementation of the cray_fenced_block class.

fenced_block.hpp is modified to call cray_fenced_block.hpp when _CRAYC is asserted.