Clone reverse fixes

2nd part of big patch.

* `copyWithZone()` replaced by `clone()`
`clone()` already returns an autoreleased object. So, no need to call `autorelease` manually.

* `reverse()` is const, and in some cases is pure virtual function.

examples updated.
Added missing `clone()` and `reverse()`