Use irmin to handle transactions and persistence

This is a work in progress - do not merge yet.

Irmin is used to persist the store and the state of each individual connection. This allows us to:
1. see exactly what happened by using 'git log'
2. restart xenstored and reconnect to existing rings