Make Device::CreateSamplerImpl to return a ResultOrError

This will allow backends to do error-handling internally for things like
allocation failures though non of them take advantage of it yet.
diff --git a/src/backend/Device.h b/src/backend/Device.h
index 79a318c..cc7d8e3 100644
--- a/src/backend/Device.h
+++ b/src/backend/Device.h
@@ -15,6 +15,7 @@
 #ifndef BACKEND_DEVICEBASE_H_
 #define BACKEND_DEVICEBASE_H_
 
+#include "backend/Error.h"
 #include "backend/Forward.h"
 #include "backend/RefCounted.h"
 
@@ -98,7 +99,8 @@
         void Release();
 
       private:
-        virtual SamplerBase* CreateSamplerImpl(const nxt::SamplerDescriptor* descriptor) = 0;
+        virtual ResultOrError<SamplerBase*> CreateSamplerImpl(
+            const nxt::SamplerDescriptor* descriptor) = 0;
 
         // The object caches aren't exposed in the header as they would require a lot of
         // additional includes.