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.
this is a terrible spaghetti code, if it were me this would never get to the code base! @pksunkara @alikh31 please revisit