Added debug tests for indexing, pop_back and both forms of erase.  Added an improved error message for erasing a single element with end().

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@177929 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/vector b/include/vector
index d9c5c2f..11d9a1b 100644
--- a/include/vector
+++ b/include/vector
@@ -1550,6 +1550,8 @@
         "vector::erase(iterator) called with an iterator not"
         " referring to this vector");
 #endif
+    _LIBCPP_ASSERT(__position != end(),
+        "vector::erase(iterator) called with a non-dereferenceable iterator");
     pointer __p = const_cast<pointer>(&*__position);
     iterator __r = __make_iter(__p);
     this->__destruct_at_end(_VSTD::move(__p + 1, this->__end_, __p));