Splitting guestagent code

Reasons:
 - agent could have different implementations.

Changes:
 - separating and refactoring.

Implements: blueprint separate-guestagent-related-code