remote.copy_files_{to,from}: Check for valid client

If the copy methods are called with an unsupported client, they will
silently ignore the request which leads to hard-to-debug errors when the
files are not properly copied to the target. This patch makes them throw
an error instead.

Signed-off-by: Jonas Eriksson <jonas.eriksson@enea.com>
Add new utils_build

Being able to build test binaries from test cases is a neccessity, but
it incurrs lots of complexity in said test case. To avoid this
complexity, and to make it possible to implement build avoidance, split
this functionality into a separate class.

Notable requirements/changes:
- To separate binaries built with different CFLAGS, Builder creates
  separate directories for each make_flags combination on target
- Test applications built with this class require a Makefile. To pass
  specific compiler flags from the configuration, let the user specify
  arguments to the make process via the make_flags parameter, e.g.
  Builder( ... make_flags="CFLAGS='-g -O3'")
- Symlinks in the source directories are not copied to the target. There
  does not seem to be a need for this, and it made the implementation
  simpler.

Signed-off-by: Jonas Eriksson <jonas.eriksson@enea.com>