Add _decoder CHECK to VCMGenericDecoder constructor.

This should never be using a null decoder, but it looks like it's
crashing out in the field. Adding a CHECK to see if it catches any
interesting stack traces.

Also making the _decoder pointer const to show that it should never be
changing.

BUG=chromium:563299
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1485713002 .

Cr-Commit-Position: refs/heads/master@{#10843}
diff --git a/webrtc/modules/video_coding/generic_decoder.cc b/webrtc/modules/video_coding/generic_decoder.cc
index 092d054..294a903 100644
--- a/webrtc/modules/video_coding/generic_decoder.cc
+++ b/webrtc/modules/video_coding/generic_decoder.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "webrtc/base/checks.h"
 #include "webrtc/base/logging.h"
 #include "webrtc/base/trace_event.h"
-#include "webrtc/modules/video_coding/include/video_coding.h"
 #include "webrtc/modules/video_coding/generic_decoder.h"
+#include "webrtc/modules/video_coding/include/video_coding.h"
 #include "webrtc/modules/video_coding/internal_defines.h"
 #include "webrtc/system_wrappers/include/clock.h"
 
@@ -131,16 +132,15 @@
     return VCM_OK;
 }
 
-VCMGenericDecoder::VCMGenericDecoder(VideoDecoder& decoder, bool isExternal)
-:
-_callback(NULL),
-_frameInfos(),
-_nextFrameInfoIdx(0),
-_decoder(decoder),
-_codecType(kVideoCodecUnknown),
-_isExternal(isExternal),
-_keyFrameDecoded(false)
-{
+VCMGenericDecoder::VCMGenericDecoder(VideoDecoder* decoder, bool isExternal)
+    : _callback(NULL),
+      _frameInfos(),
+      _nextFrameInfoIdx(0),
+      _decoder(decoder),
+      _codecType(kVideoCodecUnknown),
+      _isExternal(isExternal),
+      _keyFrameDecoded(false) {
+  RTC_CHECK(_decoder);
 }
 
 VCMGenericDecoder::~VCMGenericDecoder()
@@ -153,7 +153,7 @@
     TRACE_EVENT0("webrtc", "VCMGenericDecoder::InitDecode");
     _codecType = settings->codecType;
 
-    return _decoder.InitDecode(settings, numberOfCores);
+    return _decoder->InitDecode(settings, numberOfCores);
 }
 
 int32_t VCMGenericDecoder::Decode(const VCMEncodedFrame& frame, int64_t nowMs) {
@@ -165,7 +165,7 @@
     _callback->Map(frame.TimeStamp(), &_frameInfos[_nextFrameInfoIdx]);
 
     _nextFrameInfoIdx = (_nextFrameInfoIdx + 1) % kDecoderFrameMemoryLength;
-    int32_t ret = _decoder.Decode(frame.EncodedImage(),
+    int32_t ret = _decoder->Decode(frame.EncodedImage(),
                                         frame.MissingFrame(),
                                         frame.FragmentationHeader(),
                                         frame.CodecSpecific(),
@@ -190,18 +190,18 @@
 int32_t
 VCMGenericDecoder::Release()
 {
-    return _decoder.Release();
+    return _decoder->Release();
 }
 
 int32_t VCMGenericDecoder::Reset()
 {
-    return _decoder.Reset();
+    return _decoder->Reset();
 }
 
 int32_t VCMGenericDecoder::RegisterDecodeCompleteCallback(VCMDecodedFrameCallback* callback)
 {
     _callback = callback;
-    return _decoder.RegisterDecodeCompleteCallback(callback);
+    return _decoder->RegisterDecodeCompleteCallback(callback);
 }
 
 bool VCMGenericDecoder::External() const