MKL distribuitons requires non-const ref to stream/engine

This is more close to the behavior of C++11 engine/distribuiton, and also allow more flexibility in the implementation of the stream/engine
add missing headers