Use a setter for Device.name as foretold by the prophecy of TODO

Remove the uses of Device._name except the parts that actually need it.
Change the property to use _getName and _setName methods to make it less
confusing to override.
Validate device names

Add a classmethod "isNameValid" to blivet.Device that returns whether
the configured device name is valid for the device type, and use this
method during __init__ and setting the name. Currently the only checks
are for /'s in most device types, except allow /'s in FileDevice, and
then do something with the madness that is LVM.

Add the more-or-less sane parts of LVM's restrictions (no names starting
with a -, no ., no ..) to safeDeviceName.