Add snapdev dataset property to control visibility of zvol snapshot devices

The motivation of this patch is that I don't like cluttering a system with lot of devices that are not always needed.

With a few zvols and automated snapshots it's real easy to have a lots of block devices.

The property name is "snapdev", with values "hidden" or "visible".

This property is also a filesystem property so it can be properly inherited.

The device nodes are created and destroyed on demand.