better joining with vectors of length zero
improve subVectors and test assumptions
make subVector return Vector0 for zero lengths
ensure full subVectors return this