Add an internal ASSERT macro

This macro has some advantages over the standard library one:
 - It prints the place where the macro was triggered
 - It "references" the condition even in Release to avoid warnings
 - In release, if possible, it gives compiler hints

It is basically is stripped down version of the ASSERT macros I wrote
for the Daemon engine in src/common/Assert.h

This commit also removes the stray "backend" namespaces for common/
code.
diff --git a/src/common/BitSetIterator.h b/src/common/BitSetIterator.h
index df0702c..94e3abf 100644
--- a/src/common/BitSetIterator.h
+++ b/src/common/BitSetIterator.h
@@ -15,123 +15,118 @@
 #ifndef COMMON_BITSETITERATOR_H_
 #define COMMON_BITSETITERATOR_H_
 
+#include "common/Assert.h"
 #include "common/Math.h"
 
-#include <cassert>
 #include <bitset>
 #include <limits>
 
-#define ASSERT assert
 
 // This is ANGLE's BitSetIterator class with a customizable return type
 // TODO(cwallez@chromium.org): it could be optimized, in particular when N <= 64
 
-namespace backend {
+template <typename T>
+T roundUp(const T value, const T alignment) {
+    auto temp = value + alignment - static_cast<T>(1);
+    return temp - temp % alignment;
+}
 
-    template <typename T>
-    T roundUp(const T value, const T alignment) {
-        auto temp = value + alignment - static_cast<T>(1);
-        return temp - temp % alignment;
-    }
+template <size_t N, typename T>
+class BitSetIterator final {
+    public:
+        BitSetIterator(const std::bitset<N>& bitset);
+        BitSetIterator(const BitSetIterator& other);
+        BitSetIterator &operator=(const BitSetIterator& other);
 
-    template <size_t N, typename T>
-    class BitSetIterator final {
-        public:
-            BitSetIterator(const std::bitset<N>& bitset);
-            BitSetIterator(const BitSetIterator& other);
-            BitSetIterator &operator=(const BitSetIterator& other);
+        class Iterator final {
+            public:
+                Iterator(const std::bitset<N>& bits);
+                Iterator& operator++();
 
-            class Iterator final {
-                public:
-                    Iterator(const std::bitset<N>& bits);
-                    Iterator& operator++();
+                bool operator==(const Iterator& other) const;
+                bool operator!=(const Iterator& other) const;
+                T operator*() const { return static_cast<T>(mCurrentBit); }
 
-                    bool operator==(const Iterator& other) const;
-                    bool operator!=(const Iterator& other) const;
-                    T operator*() const { return static_cast<T>(mCurrentBit); }
+            private:
+                unsigned long getNextBit();
 
-                private:
-                    unsigned long getNextBit();
+                static const size_t BitsPerWord = sizeof(uint32_t) * 8;
+                std::bitset<N> mBits;
+                unsigned long mCurrentBit;
+                unsigned long mOffset;
+        };
 
-                    static const size_t BitsPerWord = sizeof(uint32_t) * 8;
-                    std::bitset<N> mBits;
-                    unsigned long mCurrentBit;
-                    unsigned long mOffset;
-            };
+        Iterator begin() const { return Iterator(mBits); }
+        Iterator end() const { return Iterator(std::bitset<N>(0)); }
 
-            Iterator begin() const { return Iterator(mBits); }
-            Iterator end() const { return Iterator(std::bitset<N>(0)); }
+    private:
+        const std::bitset<N> mBits;
+};
 
-        private:
-            const std::bitset<N> mBits;
-    };
+template <size_t N, typename T>
+BitSetIterator<N, T>::BitSetIterator(const std::bitset<N>& bitset)
+    : mBits(bitset) {
+}
 
-    template <size_t N, typename T>
-    BitSetIterator<N, T>::BitSetIterator(const std::bitset<N>& bitset)
-        : mBits(bitset) {
-    }
+template <size_t N, typename T>
+BitSetIterator<N, T>::BitSetIterator(const BitSetIterator& other)
+    : mBits(other.mBits) {
+}
 
-    template <size_t N, typename T>
-    BitSetIterator<N, T>::BitSetIterator(const BitSetIterator& other)
-        : mBits(other.mBits) {
-    }
+template <size_t N, typename T>
+BitSetIterator<N, T>& BitSetIterator<N, T>::operator=(const BitSetIterator& other) {
+    mBits = other.mBits;
+    return *this;
+}
 
-    template <size_t N, typename T>
-    BitSetIterator<N, T>& BitSetIterator<N, T>::operator=(const BitSetIterator& other) {
-        mBits = other.mBits;
-        return *this;
-    }
-
-    template <size_t N, typename T>
-    BitSetIterator<N, T>::Iterator::Iterator(const std::bitset<N>& bits)
-        : mBits(bits), mCurrentBit(0), mOffset(0) {
-        if (bits.any()) {
-            mCurrentBit = getNextBit();
-        } else {
-            mOffset = static_cast<unsigned long>(roundUp(N, BitsPerWord));
-        }
-    }
-
-    template <size_t N, typename T>
-    typename BitSetIterator<N, T>::Iterator& BitSetIterator<N, T>::Iterator::operator++() {
-        ASSERT(mBits.any());
-        mBits.set(mCurrentBit - mOffset, 0);
+template <size_t N, typename T>
+BitSetIterator<N, T>::Iterator::Iterator(const std::bitset<N>& bits)
+    : mBits(bits), mCurrentBit(0), mOffset(0) {
+    if (bits.any()) {
         mCurrentBit = getNextBit();
-        return *this;
+    } else {
+        mOffset = static_cast<unsigned long>(roundUp(N, BitsPerWord));
     }
+}
 
-    template <size_t N, typename T>
-    bool BitSetIterator<N, T>::Iterator::operator==(const Iterator& other) const {
-        return mOffset == other.mOffset && mBits == other.mBits;
-    }
+template <size_t N, typename T>
+typename BitSetIterator<N, T>::Iterator& BitSetIterator<N, T>::Iterator::operator++() {
+    NXT_ASSERT(mBits.any());
+    mBits.set(mCurrentBit - mOffset, 0);
+    mCurrentBit = getNextBit();
+    return *this;
+}
 
-    template <size_t N, typename T>
-    bool BitSetIterator<N, T>::Iterator::operator!=(const Iterator& other) const {
-        return !(*this == other);
-    }
+template <size_t N, typename T>
+bool BitSetIterator<N, T>::Iterator::operator==(const Iterator& other) const {
+    return mOffset == other.mOffset && mBits == other.mBits;
+}
 
-    template <size_t N, typename T>
-    unsigned long BitSetIterator<N, T>::Iterator::getNextBit() {
-        static std::bitset<N> wordMask(std::numeric_limits<uint32_t>::max());
+template <size_t N, typename T>
+bool BitSetIterator<N, T>::Iterator::operator!=(const Iterator& other) const {
+    return !(*this == other);
+}
 
-        while (mOffset < N) {
-            uint32_t wordBits = (mBits & wordMask).to_ulong();
-            if (wordBits != 0ul) {
-                return ScanForward(wordBits) + mOffset;
-            }
+template <size_t N, typename T>
+unsigned long BitSetIterator<N, T>::Iterator::getNextBit() {
+    static std::bitset<N> wordMask(std::numeric_limits<uint32_t>::max());
 
-            mBits >>= BitsPerWord;
-            mOffset += BitsPerWord;
+    while (mOffset < N) {
+        uint32_t wordBits = (mBits & wordMask).to_ulong();
+        if (wordBits != 0ul) {
+            return ScanForward(wordBits) + mOffset;
         }
-        return 0;
-    }
 
-    // Helper to avoid needing to specify the template parameter size
-    template <size_t N>
-    BitSetIterator<N, uint32_t> IterateBitSet(const std::bitset<N>& bitset) {
-        return BitSetIterator<N, uint32_t>(bitset);
+        mBits >>= BitsPerWord;
+        mOffset += BitsPerWord;
     }
+    return 0;
+}
 
+// Helper to avoid needing to specify the template parameter size
+template <size_t N>
+BitSetIterator<N, uint32_t> IterateBitSet(const std::bitset<N>& bitset) {
+    return BitSetIterator<N, uint32_t>(bitset);
 }
 
 #endif  // COMMON_BITSETITERATOR_H_