Add caching lsb_release parser

In far too many places do we remotely exec lsb_release in some form,
then parse the output. In shifting to a more stable interface between
teuthology and its tasks, this seemed important to me.

Remote objects now have a 'distro' property that, when first accessed,
calls 'lsb_release -a' remotely and parses the results.

I've included tests and documentation.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add Remote.arch

Returns the result of 'uname -p'

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Set Remote.hostname by asking the host itself

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add Remote.host_key

Turns out we can easily grab the ssh key from paramiko once a connection
is established.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add Remote.inventory_info

A property that returns a dict of attributes in the format that the
paddles lock server likes.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add lock.update_inventory()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add push_inventory() subtask

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Use teuthology.task.internal.push_inventory

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>