pithos: Fix copy/move snapshots

The available flag denotes that the object's mapfile exists on the storage
backend.
This flag should be kept during copy/move operations.
This commit handles this issue.
pithos: Provide tests for copy/move snapshots
cyclades: Store image version additional to UUID

Store the image's version together with the image's UUID, in order to
track the exact image (Pithos file) that has been used for a server or
volume. This is required because Pithos files retain their UUID when the
file's data or metadata are updated. The (uuid, version) tuple is
required in order to fully determine the file that has been used.
cyclades: Add Image DB model

Create a new model, named 'Image', to store basic information about
images that have been used to create servers or volumes. The images are
stored in Cyclades (in addition to Pithos where they exist) in order to
preserve information about images that may be updated or deleted from
Pithos.
cyclades: Use Image model to generate image stats

Use the newly introduced Image model in order to generate statistics
about the images that are used for servers.
cyclades: Store image info for new servers

Store the information about the image that has been used to create a
server. Also, update image mocks to provide all the required fields.
Merge pull request #117 from cstavr/feature-image-info

Store image information in Cyclades DB

Update Cyclades in order to store information about images that have
been used to create servers. Such information is needed to:
  * Record information about images that have been used to create servers
    that are retained beyond the deletion of the images from Pithos.
  * Make queries about statistics faster.
deploy: Faster template generation

Instead of massedit.edit_files() which takes a file pattern and
walks the given directory (/tmp in our case) to find matching files,
use editor.edit_file() which takes only the file to be customized as
argument.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
cyclades: Fix backend logic wrt ConnectNetwork

Since Ganeti 2.10, networks are connected to nodegroups with mode,
link and vlan info.

As a result group_list in GetNetwork() response include four fields
per group and not three. Fix reconciliation to be aware of it.

Additionally the OpNetworkConnect() takes an extra parameter;
network_vlan. This currently is not optional. Therefore let
ConnectNetwork() RAPI method pass an empty string as vlan info.

This will change as soon as synnefo will support private networks on
top of openvswitch.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>