Compiling but not passing experiment.
ContainerWrapper getIterator now returns an IteratorWrapper which includes wrapping container values in a reference_wrapper on the way out to give consistency with the initial lift.
Test for running over the same nested containers twice - with nested retains.
Remove redundant commented code.
Clearer naming from remove ref and const fn.
More structural tests.
Distinction made between lower/retain and lower_values/retain_values. Not quite working.
CollectionWrapper now exposes an iterator of correct and consistent type whether const-ed or not.
Differentiate between the actual element type and the element type exposed by iterators (the difference is currently only relevant in the context of IteratorWrapper and ContainerWrapper.
Infrastructure on the way to enabling stripping consts from first element of lifted maps and multimaps.
Remove support (and test) for auto-collapsing of nested reference wrappers.
Further rationalisation of reference etc behaviour. Incomplete - hence a majority of tests disabled.
Re-enable most of the tests.
Fix up remaining test.
Add transformer functor param to IteratorWrapper to allow flexibility in iterator type transformation.
Move semantics removed. Move-on-copy wrapper implemented and with some tests.
Some more tweaks.
Simple flatmap test.
Switched IteratorWrapper functor to template template parameter for greater flexibility and ease of use.
After groupBy and countBy, iterators have the const stripped off when navigating the internal map.