We should use error scopes around every call that creates a resource to capture any error and return `SLANG_FAIL` in that case. Remove `DeviceImpl::getAndClearLastError` when we do this.