Section 2.4: implementing recursive descent parsers

This patch adds 3 source files; each one implements the recursive descent parser for the grammars presented in exercises for section 2.4 - I thought it is actually much more fun to see it all working in a real implementation rather than looking at the pseudo-code and believe that it would work :)

The code is pretty naive btw, but I think it is a good complementary work to include in our solutions.