fix edged case bug

たとえば
```perl
JSON::Pointer->move([0,1], '/2', '/1');
# [0, undef, 1]
```
となりますが、配列へのpointerについては、たぶん以下の仕様が正しいと思われます。
* 要素数と同じindexが許容されるのはaddのみ
* その他のopに関しては、該当pointer（removeとreplaceはpath, moveとcopyはfrom）が指し示すindexは要素数未満である必要があり、かつ"-"であってはならない
* testについてはRFCに明示的に書いてないが、たぶんだめ（例外投げるべき）。でも微妙。

boolの引数が複数になるのは微妙かなと思ったので$optsにまとめてしまいました。なおtraverse以外のinterfaceはいじってまてん。