Implemented missing operators in Iterator template
* Iterator template instances now support all operators required by std::random_access_iterator_tag
* Fixed bug in end() iterator instantiation in the Container template
** offset accepting Iterator constructor was using the at<Size>(size_t) method of the Buffer template
** this method is checking the given index against the boundaries defined by the buffer which led to an exception when trying to instantiate an end-iterator which points to the element behind the last
** now using the square-bracket operator to get an iterator to the last element
* Expanded iterator test cases