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.
 
I agree that having a good api for the parser is desirable, but verifying the properties of a specification has nothing to do with the api of a parser. you need to think about what dependencies you actually want to have between components, not just blindly take the dependencies which are currently theer and mechanically translate the way that they interact with each other. It seems like a lot of the functions you added to this interface are very specific to a certain implementation, rather than actually providing a clean api.