optional parameter uuid for archipel:hypervisor:control/alloc

`archipel:hypervisor:control/alloc` call could have an optional parameter `uuid`. In such case, UUID generation wouldn't be performed by libvirt, but the provided one would be used. This would really helpful for creating meaningful JIDs for VMs. If UUID is set to `vm0.nowaker.vps` then JID would be `vm0.nowaker.vps@xmpp.example.com`. Contact names would be very meaningful, easy to memorize by the customers. They wouldn't have to log in to Archipel to copy-paste their VM JIDs to add to Jabber client.

Libvirt doesn't care if `<uuid />` is set to some arbitrary string. The only requirement for UUID is to be unique across the hypervisor.

Here's a proof it works:

```
<query xmlns="archipel:hypervisor:control">
  <archipel action="alloc" categories="Archipel" locality="Gdansk, Poland" name="pacmanvps-unit-test" orgname="StratusHost" orgunit="CumulusHost/pacmanvps" userid="pacmanvps-robot@xmpp.pacmanvps.com" uuid="pacmanvps-unit-test" />
</query>

<iq from='utgard@xmpp.pacmanvps.com/utgard.cumulushost.eu' id='547' to='pacmanvps-robot@xmpp.pacmanvps.com/8833734691388263243849677' type='result' xmlns='jabber:client'><query xmlns='archipel:hypervisor:control'><virtualmachine jid='pacmanvps-unit-test@xmpp.pacmanvps.com'/></query></iq>
```

![arbitraty-uuid](https://f.cloud.github.com/assets/611746/1818407/c4a6a738-7000-11e3-9625-edbd45b839b2.png)


In this push request you will find:
- new feature: optional `uuid` parameter to `archipel:hypervisor:control/alloc`
- small refactoring: code deduplication, more meaningful variables and arguments names, argument types fixes in the comments, code style reformat to PEP8