xenapi: Attach original local disks during rescue

When rescuing an instance, a new VM is created and only the original
root disk is re-attached. Often when a user is rescuing a VM, they expect
to be able to access all of their original disks so they can potentially
salvage data.

This changes the xenapi driver to attach the original local disks
during rescue so the user can rescue all of their data.

DocImpact

Implements: blueprint rescue-attach-all-disks
Change-Id: Iba5cc85cd03d0a60f1858cf16aa31397e163df50
Partial-bug: 1223396
Move and generalize decorator serialize_args to nova.objects.base

It would be nice use decorator `serialize_args` as general-use
decorator. Note that this single-purpose decorator was covering
up our ability to drill down to the actual method implementation
for hash calculation in the TestObjectVersions test. This patch
also enhances the decorator to be transparent, and makes the
test able to drill down through multiple layers of decorators
to find the actual implementation.

Co-Authored-By: Dan Smith <dansmith@redhat.com>
Change-Id: Ie454bffba113d7b3a863e975b2fb0ee6fb1dd552
Decrease amount of queries while adding aggregate metadata

Dict of aggregate metadata sometimes contains a lot of items,
so while adding of metadata current implementation make a lot
of inserts in database.

Using multirow INSERT instead of INSERT statement allows to
decrease amount of queries to one single query per operation.

Change-Id: I6b842459cf198f8577b615aeba091723dcb18429
Merge "Move and generalize decorator serialize_args to nova.objects.base"
Merge "Decrease amount of queries while adding aggregate metadata"
Merge "xenapi: Attach original local disks during rescue"