Introducing Driver Module

`oclint-driver` module has been added to replace `oclint-clang-tooling` module in this pull request. Essentially, we have learned from Clang Tooling, and in order to bring project-scope analysis into the picture, we changed certain behaviors from original Clang Tooling code. So now, instead of holding only one translation unit at a time and analyzing on one simple abstract syntax tree (AST) unit, we compile all source codes for the entire projects, keep every units, therefore, when rules traverse one AST, it is also possible to refer other ASTs to have a larger context for better accuracy. In addition, it's also possible to have pre-processing and post-processing in order to prepare prerequisite data in advance and summarize finally respectively.

Along with these changes, we are able to include compiler errors and warnings into our result set (#53), and display them by reporters when necessary.

We also enhanced `debug` messages to emit the progress of entire execution when this flag is turned on (#47). It's helpful especially now we compile all code, pre-process, analyze, and post-process ASTs, and finally emit reports, users can clearly understand the states of invotation.

In addition, we leverage this change to wrap `oclint` related code into its namespace, to avoid future naming conflicts.