rtc::ArrayView reverse iterators

- rtc::ArrayView::rbegin()
- rtc::ArrayView::rend()
- rtc::ArrayView::crbegin()
- rtc::ArrayView::crend()

Bug: webrtc:7494
Change-Id: Id773d66cc9da8bd58def1dba35a706914440ef37
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/189880
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32458}
diff --git a/api/array_view.h b/api/array_view.h
index a66369a..df365cb 100644
--- a/api/array_view.h
+++ b/api/array_view.h
@@ -13,6 +13,7 @@
 
 #include <algorithm>
 #include <array>
+#include <iterator>
 #include <type_traits>
 
 #include "rtc_base/checks.h"
@@ -258,6 +259,18 @@
   T* end() const { return this->data() + this->size(); }
   const T* cbegin() const { return this->data(); }
   const T* cend() const { return this->data() + this->size(); }
+  std::reverse_iterator<T*> rbegin() const {
+    return std::make_reverse_iterator(end());
+  }
+  std::reverse_iterator<T*> rend() const {
+    return std::make_reverse_iterator(begin());
+  }
+  std::reverse_iterator<const T*> crbegin() const {
+    return std::make_reverse_iterator(cend());
+  }
+  std::reverse_iterator<const T*> crend() const {
+    return std::make_reverse_iterator(cbegin());
+  }
 
   ArrayView<T> subview(size_t offset, size_t size) const {
     return offset < this->size()