fix for bug 527 and correct return data structure in case zero ideal is passed to primdecZ


fixes also the following sort of bugs:
1. 
in the past `primdecZ(ideal(0))`
returned 
```
list(ideal(0),ideal(0))
[1]
   _[1]=0
[2]
   _[1]=0

```
but correct is:
```
list(list(ideal(0),ideal(0)))
[1]
   [1]
      _[1]=0
   [2]
      _[1]=0

```

2.
```
ring rng = integer, (xk,xx),dp;
ideal I = 8*xk;
primdecZ(I);
  ? identifier C not found in Shelp
   ? error occurred in or before primdecint.lib::extractZ line 1123: `         list C=imap(Shelp,C);`
   ? leaving primdecint.lib::extractZ
```