BuildStream client-side implementation of remote execution

Background

A continuation of #417 (closed). Add the necessary client-side code for BuildStream to use remote execution.

Task description

  • Add a replacement Sandbox-type object which marshalls build input roots from the local device and sends them to the artifact cache
  • Make the new Sandbox-type object pack up and send commands to the artifact cache and signal to a BuildGrid server that a command is waiting.
  • Pull resulting output directories from the artifact server.
  • Add keys to the project configuration to specify the BuildGrid server and instance

Acceptance Criteria

Demonstrate use of remote execution to build Freedesktop-SDK and any other projects we see fit, with the same results as building locally.

Edited by Jim MacArthur