Add nodes field in class Disk

Add a field called "nodes" in the Disk class. This field will be a list
of Ganeti node UUIDs from which this disk is accessible.
Populate disk nodes when creating disks

When creating a Disk using the GenerateDiskTemplate function, fill the
nodes field depending on the disk template. There are three cases:

1) Internally mirrored disks (DRBD):
   These disks are accessible from two nodes, so the nodes field will
   include these. Their children (data, meta) are also accessible from
   two nodes, therefore they will inherit the nodes of the parent.
2) Externally mirrored disks (Blockdev, Ext, Gluster, RBD, Shared File):
   These disks should be accessible from any node in the cluster,
   therefore the nodes field will be empty.
3) Single-node disks (Plain, File):
   These disks are accessible from one node only, therefore the nodes
   field will consist only of the primary instance node.
Maintain consistency of nodes field

There are four scenarios in which the nodes field can change after the
disk's creation; when moving, replacing, converting or recreating disks.
For each scenario, update the nodes field accordingly.
Update cfgupgrade tool

Create an upgrade function that adds a nodes field to each disk that is
attached to an instance. Also, add a downgrade function that removes the
nodes field and brings the config to the default state for 2.12.
Update various tests regarding disk creation

Update the tests that deal with disk creation and check if the nodes
field is populated correctly when creating a disk.