Moved Buffer and BufferIterator templates into dtl namespace
* they are the internal buffer io implementation and not intended for usage by the user of this library
** the user should not be forcibly required to be exposed to raw pointers during normal usage
* modified test cases accordingly
* Iterator constructor is now protected and only available to matching Container specializations
** this increases encapsulation as the user shouldn't hand-initialize Iterators
* Iterator constructor now expects range-defining dtl::BufferIterator instances instead of a pointer to a Buffer instance
* Container template specializations can now be constructed by either only a size or a raw memory pointer and a size
** if only a size is given the internal dtl::Buffer manages its own memory (scoped)
** if both a size and a raw memory pointer is given the memory has to be managed externally
* removed Tuple template construction from pointer to Buffer
** this is replaced by simply calling e.g. dtl::Buffer::front() in the constructing class
** this forces Tuple constructing code to state its intention more clearly