Arsenal sign Porto midfielder Vieira