dense vectors: add some more methods expected for containers
This merge request makes dense vectors look a little bit more like
standard containers by adding front(), back() and empty()
member functions.
For dense vectors where the implementation uses a contiguous array, a
data() member function is also provided.