fix C++ target
bug fixes for C++ target
- initialize array with zero
- alloc & dealloc filestream filenames
- chnage memcpy to memmove for overlapping array copy
- remove * for string type arguments at runtime codegen
- add c codegen for profile DSL
- change struct constructor argument names
enable C++ target for OptiQL
fix C++ bug: declare runtime _cond variable only once for each target
enable Arguments op for C++ only when needed
FIX: For scala target _cond variable should be generated for all possible schedules
Added additional casts for blas code generation.
Fixed kMeans C++ kernel detection bug
Added config line to Arguments.scala
C++ fix: load/store JNI objects to share across C++ threads.
Use case: when a C++ thread tries to update to JVM for a data structure created from another C++ thread.
(test case: Delite OptiML VectorSuite VectorUpdatesRunner)
C++ fix: Initialize sync object of type string to string() instead of NULL.
C++ fix: off-by-one error for parallel IO (bug was skipping the first line assigned to each thread)
C++ fix: missing notify/await nodes
C++ fix: structural equality for DeliteStructs
C++ fix: reference sync objects only when actually generated (locations passed to writeJNIInitializer)
Merge remote-tracking branch 'origin/develop' into cpp
Merge branch 'optiml-perf-improvements' into develop
Merge remote-tracking branch 'origin/develop' into cpp

Conflicts:
	runtime/src/ppl/delite/runtime/graph/ops/Arguments.scala
C++ fix: lock/unlock accesses to std::map
Fixes non deterministic JVM crashes when running OptiQL tests
C++ fix: put jobject on stack and re-insert it to map after transfer.