Replace posix strdup with c standard strlen/malloc/memcpy

On MSVC the strdup implmentation differs from the posix version causing a heap violation error when the resulting string is freed when CorsixTH is run in debug (at least on MSVC 2010)