Modularize parser component

This build made some refactoring on the structure of the project so that Parser Component has a clearer API now. The other components can communicate with Parser Component by the ParserService Interface. The clients of Parser Component do not need to bother how to manipulate different parts of the parser to finish a task now, what the other components need to do is providing the input to appropriate port of the ParserService instance, and then the desired output will be returned. The clients who use Parser Service can put new requirements on Parser Component by adding methods in ParserService Interface. 
@owolabileg  @pdaian  @yzhang90 Please review.
 
this is not exactly the best structure because you are introducing code that guarantees that all instances of ParserService are implemented by ParserServiceImpl which kind of defeats the point of making this an interface. It's fine to make this a static singleton for now, but I encourage you to think about adopting a similar structure to the K framework in order to be able to swap out implementations of this interface using configuration, if that is what your goal is. That is generally the motivation behind dependency injection frameworks like Guice and Spring.