Using convention of capitalizing directories that don't contain go code
Refactor existing job_spec tests

They were still using the old NewSpec function that was expecting
arguments in the form they would be delivered from goworker.
Additionally, NewSpec wasn't actually being used in the code, just the
tests.  This all seemed quite silly, so I fixed it.
[TRIVIAL] rearrange test-related function
Setting up code structure for job.ValidateAfterCloning()

For now, the only thing this function validates is the custom Bobfile
path if specified.  Still to do - write the tests and then the code for
ValidateAfterCloning()
Using a consistent interface for the builder "build" command

as opposed to having both Build() and BuildFromFile() and allowing them
to diverge
Bobfile validation doesn't belong in job, moving it to builder

that way it will happen when we build both from the server and the
command line
Rearranging return values to make the linter happy
Update deps
Minor refactor of job.go
[TRIVIAL] rearranging some vars
Refactoring the errors that are returned by the builder

using custom error types that are more informative as well as cleaning
up the way in which the errors are produced
Moving the builder setup-related tests into their own file
Minor refactor of the parser

Renaming a function so it has "Builderfile" instead of "Bobfile" in the
name.  Admittedly this is a bit confusing.  The reason is that the
package and files related to bobfiles must be named something else so
they don't conflict with the Bobfile at the top level.  The result is
many instances in code where a "Bobfile" is referred to as a
"Builderfile".  That being the case, we should probably keep it
consistent throughout the code.

Also removing an unneeded logger global for the parser package
Adding file sanitization for named bobfile paths (and tests)
Adding comments for the linter
Fixing stuttering names for the linter
Getting rid of lots of unnecessary calls to fmt.Sprintf
Splitting out uuid-related parser functions into separate file
[TRIVIAL] removing some comments
Refactoring parser to use custom error types

also not returning an error from NewParser - this was a premature
optimization and never ended up being necessary