Further preparation for transition to guest agent

 * Added abstract classes defining remote interface. The first class
   is for driver and the second one is for remote object. Note:
   execute_on_vm_interactive is not included into the later interface
   as it is not used in anywhere.
 * Now driver can provide additional part for userdata. This will be
   used by agent driver to setup guest agent on instances.
 * SSH opts are moved from ssh_remote.py to remote.py. While
   ssh_remote.py is the best place for them, together with change #1
   opts created circular imports:
     * remote.py imports ssh_remote.py to get options
     * ssh_remote.py imports remote.py to get abstract classes
   The problem can be resolved by moving abstract classes to a new
   module, say remote_common.py. But I prefer the variant I've
   implemented.
 * Fixed tests to work with the changes.

Implements: blueprint guest-agent
Change-Id: I2ccae4df7b664c612fd15a3e9578af5b7dd6f81c
Merge "Further preparation for transition to guest agent"