Use memmove instead of memcpy in string::assign.

It is possible to assign a string part of its own buffer:
std::string s; s.assign(s.data(), s.size());
This can not be done with memcpy.

Upstream bug:
https://sourceforge.net/tracker/?func=detail&aid=3323109&group_id=146814&atid=766244

Change-Id: I611b1c08664c9eacb7ded6821ef2ef555a3288a8
diff --git a/stlport/stl/_string.c b/stlport/stl/_string.c
index 4fa5ece..ae55092 100644
--- a/stlport/stl/_string.c
+++ b/stlport/stl/_string.c
@@ -242,11 +242,11 @@
 basic_string<_CharT,_Traits,_Alloc>::_M_assign(const _CharT* __f, const _CharT* __l) {
   ptrdiff_t __n = __l - __f;
   if (__STATIC_CAST(size_type, __n) <= size()) {
-    _Traits::copy(this->_M_Start(), __f, __n);
+    _Traits::move(this->_M_Start(), __f, __n);
     erase(begin() + __n, end());
   }
   else {
-    _Traits::copy(this->_M_Start(), __f, size());
+    _Traits::move(this->_M_Start(), __f, size());
     _M_append(__f + size(), __l);
   }
   return *this;