argv construction for compiler call now uses std::vector and strings duplicated
with strdup are now freed after the call.

removed counting of argc which is implicit with vector::push_back()