refactor to simplify
extra docs
isRangeZero override
better range checking for copyTo
optimised applyOpCopy for ADenseArrayVector