DRILL-1697. C++ Client. Use the object io_service::work to prevent io_service running out of work.

- Deleting the `work` object to permit the io_service to exit.
- Also reset `io_service` before submitting query.
DRILL-1533 C++ Drill Client always sets hasSchemaChanged to true for every new record batch

Free up memory from columnDefs. Added a check to ignore empty data. Empty oldSchema if still contains items in the end
DRILL-1498 Drill Client to handle handshake messages in handleRead and to ignore spurious results
Drill-1537: Passing listener context directly to the QueryResultsListener callback function.
DRILL-1537: Addendum. Add interface for get application context.
C++ Client. Correct the setting of SYSTEM_LOCALTIME_MIN for Windows platform.
C++ Client. Enable passing CMAKE_CXX_FLAGS, CMAKE_C_FLAGS options from cmake.

Also it contains specific changes needed by ODBC Driver.
C++ Client. Add trace message for C++ client freeBuffer and improve connection log message.
DRILL-1197: C++ Client. Differentiate socket/handshake/query timeout for deadline timer.

- add trace logging for error handling.
- return more detailed connection status for validate handshake.
- some bug fixes for time out.

Conflicts:
	contrib/native/client/src/clientlib/drillClientImpl.cpp
DRILL-1219: C++ Client. Fix timeout for 32-bit windows platform

Disable boost cancel io and use shutdown socket operation.

Conflicts:
	contrib/native/client/src/clientlib/drillClientImpl.cpp