Support lazy referencing

this PR would make the snowcrash able to recognize references which has been defined after the location of the usage. closes issue #84.
@pksunkara sorry but it's not clear here what you mean to me, do you think the identifier structure should look like something like this:

		/** Symbol identifier */
		struct Identifier {

			typedef int Type;

			/** Symbol name */
			SymbolName name;

			/** Type of the identifier*/
			Type type;
		};

 or do we need to add structure for identifier at the first place?