* build state's source_path member is the path to store downloaded and checked out source code of all targets, used when calling with --target command line option
* build state's source member is assigned either from --source command line option directly or from --target command line option appended to source_path member
put all code into new package, build script will use it as a black box
split build state from builder class, and pass state to target methods
place base, main, dependency, special targets into separate files, and put them in own package
This implements #19