Create a thin-pool and create volumes from it

In SR.create we create a thin-pool using 80% of the remaining storage
with a well-known name. We leave space free for the admin to create
additional non-thin volumes. The admin is also free to resize the thin
pool as they see fit.

In Volume.create we create our volumes from the well-known thin-pool.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Volume.{clone,snapshot}: create LVM snapshots from the thin pool

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #16 from djs55/thin-provisioning

Use LVM thin-provisioning
Report backtraces to the calling process

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #17 from djs55/experimental-exceptions

Report backtraces to the calling process
Fix basic typechecking errors

Note to self: need to actually check the scripts compile before
releasing!

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #18 from djs55/experimental-exceptions

Fix basic typechecking errors