Refactor colored writing into WriteLine() function

This serves two purposes. It protects with a Mutex where it was missing
before, and makes it so that there is only one place to change code for
the line writing, which will be a later pull request.
Move mutex onto OutletFactory

It's bad form for the mutex to live in the global namespace when it
doesn't need to.
Factor out PlatformSpecificInit()
Make Process.Start the same across platforms
Don't set p.Root in NewProcess

It's being eliminated by embedding the *Cmd in the Process.
Embed *exec.Cmd in Process struct

Motivation: Trying to slim the Process wrapper as much as possible to
make later transformations easier.
Eliminate unused imports from windows.go
Eliminate Pid() function
Add error handling to Signal()
Merge branch 'write-refactor' into process-refactor
Fix #16 and race condition on final lines printed

This commit refactors to read whole lines from Stdin/Stdout pipes and
fixes a race condition where the final output of a process may be
missed.