De-duplication of instrumentation code.

This patch introduces a hierarchy among the classes that instrument the code,
of the form: ASTTopDownTraversal -> traversal_t -> <instrumentation-class>. As
a result of introducing traversal_t, much of the functionality common to all
instrumentation classes is coded just once in the traversal_t class definition.
Henceforth, creating a new instrumentation class should be much simpler and
faster.

TODO: Transform instrumentor_t to come under the hierarchy as well. This is a
bit difficult because instrumentor_t relies on evaluateInheritedAttribute() and
not the process_loop() mechanism as is followed by other instrumentation
classes.