correction execution order, see #3126

* wrong execution order, we should check just before PyArray_FromAny
  is called, otherwise numpy objects are copied incorrectly
* simplificaton by checking subarray
* strings are sequences which are copied by void correctly