Implement iterator logic.

The base logic looks fine (still need to implement succ() and pred() members,
which alter the position of the iterator and return the associated elem_ptr).

The ll_smartptr_list is going to be the global list type:
it can handle the full requirements of the base implementation.

The ll_smartptr_list::{const_,}iterator classes need to become a template
living in ll_list_detail, just like reverse_iterator_tmpl is.

STL reverse iterator template will not work for the iterators, due to it
pointing next to the element instead of at the actual element.

I may want to alter the way the begin/end iterators are initialized,
by initializing it to a specific element instead of to the head...
Currently the implementation requires me to allow wrap-around across head
for iterators, which I'm not sure is a good idea.