vfs/zfs: Sync vnode and znode refcounts

The mismatch between vnode and znode refcount was found while working on
the leak series, but I wasn't able to come up with a good solution at
that time.

This patch addresses a problem which could potentially leak znode objects.

The function vrele from the VFS layer along with the changes made into
zfs_inactive prevent zfs_inactive itself from working properly on the
same znode more than once. Simply put, zfs_inactive isn't able to release
more than 1 refcnt of the same znode.

So the actual problem comes into effect, when you have a znode holding
two refcounts of its own. When it happens, the underlying znode object
would stay around 'forever' ( at least till OSv is switched off ;-) )

- Scenario example where this problem would take place:

* Consider that you have opened a file for the link A, so the znode structure
will be created with refcnt set to 1.

* Afterwards, you open a file for the link B which has the same inode as the
link A. Another znode wouldn't be created, but instead the refcnt of the same
znode used for the link A would be bumped, thus 2.

- How to fix the problem:

* First, allow zfs_inactive to work on the same znode till the refcnt reaches
zero. To do that, vp->vdata must only be set to NULL when we're sure that
znode will be actually destroyed. So let's do it conditionally regarding
the znode refcnt from now on.
NOTE: also properly initialize the field z_vnode on every znode creation.

* Then finally, fix our vrele to call VOP_INACTIVE even when the vnode object
isn't supposed to be destroyed. So it would release the refcnt of the znode
properly. After all, zfs_zinactive called by zfs_inactive would only destroy
the znode object if its refcnt reaches 0.
It would also synchronize the vnode refcnts with the znode ones.

'scripts/test.py -s;' succeeded.

Reviewed-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
tests/tst-zfs-mount: Add check to VOP_INACTIVE functionality

Reviewed-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>