Fix CPUFeature iterator behaviour.

The `++` operators should return iterators, not values.

This also updates tests to match, and makes wider use of C++11
range-based `for` loops, where they simplify code.

Change-Id: I2c8ef422e851d6b16c8de2890ae16fc69817a738
diff --git a/src/cpu-features.h b/src/cpu-features.h
index cbec565..738fa69 100644
--- a/src/cpu-features.h
+++ b/src/cpu-features.h
@@ -378,8 +378,8 @@
   bool operator!=(const CPUFeaturesConstIterator& other) const {
     return !(*this == other);
   }
-  CPUFeatures::Feature operator++();
-  CPUFeatures::Feature operator++(int);
+  CPUFeaturesConstIterator& operator++();
+  CPUFeaturesConstIterator operator++(int);
 
   CPUFeatures::Feature operator*() const {
     VIXL_ASSERT(IsValid());