Split program up into cbuildd package and a separate main program.

This allows us to have multiple programs in one repository, at the downside
of need separate commands to build those binaries.
Add proper return code to test software.
Moved command line parsing into a separate function and added a test.
Refactor test to support multiple inputs easily.

We want to add real world use cases which break our code as they are found.
Now use a custom TempFile so our temp files match the given suffix

Some compilers use like gcc use the suffix to figure out how to handle a
file.  The default go TempFile does not support this so we have to
re-implement it.
Switch to explicitly passing in the name of the compiler

Since we are replacing the compiler this lets us call the correct one even
if we replaced both the C and C++ compilers.
Make the output of the build struct a function

It's just a copy of internal data, lets turn it into a method.
Refactor RunCmd to return code and command output

This will allow proper propagation of errors up from the servers to the
clients.
Added tests for the Compile and Preprocess functions

These tests rely on gcc being installed currently but they remove the need
for the manually testing shell script.
Switch ExecResults Output to be a []byte slice instead of a buffer

Better to be passing around a less complicated object.  Maybe we'll
eventually switch to a string but I am unsure.
Added CompileJob type and function for building it

This is intended to go over the wire between the build server and the host.
cbdcc now uses the new CompileJob type

This doesn't yet send the compile job to a remote host for execution but
the job is created then compiled locally and the results are then written
to disk.
Created cbd build worker and updated cbdcc to send it jobs over the network

This uses the CBD_POTENTIAL_HOST environment variable to enable remote
compilation vs. local compilation.  Go's gob encoding is used to encode
the structs sent back and forth.
Broke off general utility funtions into util.go file and util_test.go

This makes it more clear where the real code for the project lies vs.
helper software.
Renamed project cbd

This doesn't appeared to be taken by anything but tinycbd in debian, so we
are reasonable conflict free, and a 3 letter package is much better.
Added a test of the gob encoding.

Was getting some strange behavior in the main apps, and this is just a
sanity check that it works for our result structure.