liborigin 2.0.0

Todo List

Namespace kp
  - New-style move members are not completely finished yet.
  - It would be good to have an iterator which can iterate over all nodes below a given node.
  - Fixed depth iterators do not iterate over the entire range if there are 'holes' in the tree.
  - If a range uses const iter_base& as end iterator, things will inevitably go wrong, because upcast from iter_base to a non-sibling_iter is incorrect. This upcast should be removed (and then all illegal uses as previously in 'equal' will be flagged by the compiler). This requires new copy constructors though.
  - There's a bug in replace(sibling_iterator, ...) when the ranges sit next to each other. Turned up in append_child(iter,iter) but has been avoided now.
  - "std::operator<" does not work correctly on our iterators, and for some reason a globally defined template operator< did not get picked up. Using a comparison class now, but this should be investigated.