Remove mutex from file seselector

mutex would, in some rare cases fail to lock and cause a freeze
of the GUI.

Also restored some code that was removed before and should not
have been removed to fix a bug with folder selection where you
select the same file or folder twice (e.g. select a backup on the
restore page, press back, then select that backup again.)
diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp
index 37eeed2..8b58044 100644
--- a/gui/fileselector.cpp
+++ b/gui/fileselector.cpp
@@ -391,20 +391,14 @@
 	}
 
 	// Update the file list if needed
-	pthread_mutex_lock(&updateFileListmutex);
 	if (updateFileList) {
-		pthread_mutex_unlock(&updateFileListmutex);
 		string value;
 		DataManager::GetValue(mPathVar, value);
 		if (GetFileList(value) == 0) {
-			pthread_mutex_lock(&updateFileListmutex);
 			updateFileList = false;
-			pthread_mutex_unlock(&updateFileListmutex);
 		} else {
 			return 0;
 		}
-	} else {
-		pthread_mutex_unlock(&updateFileListmutex);
 	}
 
 	// This tells us how many lines we can actually render
@@ -562,11 +556,9 @@
 	}
 
 	// If a change came in during the render then we need to do another redraw so leave mUpdate alone if updateFileList is true.
-	pthread_mutex_lock(&updateFileListmutex);
 	if (!updateFileList) {
 		mUpdate = 0;
 	}
-	pthread_mutex_unlock(&updateFileListmutex);
 	return 0;
 }
 
@@ -846,6 +838,10 @@
 
 int GUIFileSelector::NotifyVarChange(std::string varName, std::string value)
 {
+	if (varName.empty()) {
+		// Always clear the data variable so we know to use it
+		DataManager::SetValue(mVariable, "");
+	}
 	if (!mHeaderIsStatic) {
 		std::string newValue = gui_parse_text(mHeaderText);
 		if (mLastValue != newValue) {
@@ -861,9 +857,7 @@
 		if (varName == mSortVariable) {
 			DataManager::GetValue(mSortVariable, mSortOrder);
 		}
-		pthread_mutex_lock(&updateFileListmutex);
 		updateFileList = true;
-		pthread_mutex_unlock(&updateFileListmutex);
 		mStart = 0;
 		scrollingY = 0;
 		scrollingSpeed = 0;
@@ -1004,9 +998,7 @@
 {
 	if (inFocus)
 	{
-		pthread_mutex_lock(&updateFileListmutex);
 		updateFileList = true;
-		pthread_mutex_unlock(&updateFileListmutex);
 		scrollingY = 0;
 		scrollingSpeed = 0;
 		mUpdate = 1;
diff --git a/gui/objects.hpp b/gui/objects.hpp
index 047b66b..3a39fe5 100644
--- a/gui/objects.hpp
+++ b/gui/objects.hpp
@@ -496,7 +496,6 @@
 	COLOR mFontHighlightColor;
 	int startSelection;
 	bool updateFileList;
-	pthread_mutex_t updateFileListmutex;
 };
 
 class GUIListBox : public RenderObject, public ActionObject