Locations of macros definitions

Saving locations of macros definitions in new fields in Macro class.
In addition, PreprocessorListener.handleMacroExpansion gets information
about location of the definition of the macro that is expanded if it is
available.
Location of tokens that come from a macro expansion

Tokens that come from a macro definition have now their position set to
the macro identifier that is expanded.
Add setting original macros tokens

Token has new field 'originalMacroToken' that can indicate the token with
a macro identifier that has been replaced by it. Tokens that are returned
because of a macro expansion (but other than predefined macros) have this
field properly assigned. Their positions are not changed anymore.
Correct assigning original tokens

Original tokens should be assigned to tokens properly in all cases. Token
class has been enriched by implementing 'Cloneable' interface.