Return std::unique_ptr from openForReading

This makes clear that pointer ownership is transfered to the caller.
See see GotW 90 solution 2 at
http://herbsutter.com/2013/05/30/gotw-90-solution-factories/
Use auto
Return std::unique_ptr from openForWriting

This makes clear that pointer ownership is transfered to the caller.
See see GotW 90 solution 2 at
http://herbsutter.com/2013/05/30/gotw-90-solution-factories/
Use auto