Better argument parsing and config system.

Arguments now parsed into BuildOptions object. If args are invald then
it prints out help. Added third test case that will support multiple
targets with different modueles but the test case does not work yet.