Error handling in StreamExecutor is based on llvm::Error and llvm::Expected. This CL sets up the StreamExecutor wrapper classes in the streamexecutor namespace.
All the other StreamExecutor code makes use of this error handling code, so this is the first CL for checking in StreamExecutor.
FWIW I have studiously avoided learning CMake. If this isn't just copy/pasted from somewhere, maybe Art can sign off on it. But if you're happy with it, that's good enough for me.