golangconfig: Fix operation when no project file is open in ST3

Previously settings loading functionality assumed that a project
was opened when being run in Sublime Text 3. This fixes the mocks
to properly replicate the behavior of ST3, and adds a check to
_get_most_specific_setting() before trying to use project data.

Change-Id: Ia646345701092f454fd762af2bb527a51d530ef2
Reviewed-on: https://go-review.googlesource.com/16250
Reviewed-by: Jason Buberel <jbuberel@google.com>
diff --git a/all/golangconfig.py b/all/golangconfig.py
index a59386d..d73d72c 100644
--- a/all/golangconfig.py
+++ b/all/golangconfig.py
@@ -465,7 +465,7 @@
 
     window_settings = {}
     if window:
-        if sys.version_info >= (3,):
+        if sys.version_info >= (3,) and window.project_data():
             window_settings = window.project_data().get('settings', {}).get('golang', {})
         elif not view and window.active_view():
             window_settings = window.active_view().settings().get('golang', {})
diff --git a/dev/mocks.py b/dev/mocks.py
index 3085c70..daac24c 100644
--- a/dev/mocks.py
+++ b/dev/mocks.py
@@ -30,7 +30,10 @@
         if self.window():
             # In Sublime Text, View objects inherit settings from the window/project
             # unless they are explicitly set on the view, so we replicate that here
-            merged_golang_settings = self.window().project_data().get('settings', {}).get('golang', {}).copy()
+            merged_golang_settings = {}
+            project_data = self.window().project_data()
+            if project_data:
+                merged_golang_settings.update(project_data.get('settings', {}).get('golang', {}).copy())
             merged_golang_settings.update(self._settings)
         elif self._settings:
             merged_golang_settings = self._settings.copy()
@@ -52,6 +55,8 @@
         self._context = context
 
     def project_data(self):
+        if self._settings is None:
+            return None
         return {'settings': {'golang': self._settings}}
 
     def active_view(self):
@@ -214,8 +219,6 @@
 
     @property
     def window(self):
-        if self._window_settings is None:
-            return None
         return SublimeWindowMock(self._window_settings, self)
 
     @property