Move semantics

Learning about rvalue references and move semantics in C++11, added the
move assignment and move constructors to the class and changed the
CreateFromArray factory function to return by value and use the move
constructor instead of allocating and returning a pointer.