Add BTRFSValueError error and use in btrfs related code (#1019685)

Related: rhbz#1019685

From BTRFS related methods that have ValueError-like exceptions raise
BTRFSValueError instead of ValueError. Note that this will not change the
behavior of code that calls these method and catches a ValueError since
BTRFSValueError extends ValueError. It can change the behavior of calling
code where a BTRFSError is expected; since BTRFSValueError is also a subtype
of BTRFSError the formerly ValueError exception will be caught where
previously it would not. There are no instances like this in anaconda.
There are two in blivet, in devices.py, and in both cases, this change
seems to be an improvement.

Signed-off-by: mulhern <amulhern@redhat.com>
Check if device has enough members when setting RAID level (#1019685)

Related: rhbz#1019685

RAID levels have minimum member requirements. Level setters now raise a
BTRFSValueError if device does not have enough members to meet the minimum
requirement. However, if the device exists its members may not be known
yet, so the check is omitted.

Also, RaidError is rethrown as BTRFSValueError in level setter if the level
is not valid for its use. Previously the RaidError was just propagated.

Also, self._dataLevel and self._metaDataLevel are explicitly assigned to
in __init__ to avoid need to disable pylint attributed-defined-outside-init
warning in setter function. The assignment is all on one line, because that
is its sole purpose, and with the comment to explain it it still takes up
two lines.

Signed-off-by: mulhern <amulhern@redhat.com>