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 list depending on the disk template. There are three cases:

1) Internally mirrored disks (DRBD):
   These disks are accessible from two nodes, so the nodes list 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 list will be empty.
3) Single-node disks (Plain, File):
   These disks are accessible from one node only, therefore the nodes
   list will consist only of the primary instance node.
Maintain consistency of nodes list

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

Create an upgrade function that adds a nodes list to each disk that is
attached to an instance. Also, add a downgrade function that removes the
nodes list 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
list is populated correctly when creating a disk.