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 in case of using `ReferenceType` and `ReferenceType type` it's better if we use the structure as @zdne suggested in the [gist](https://gist.github.com/zdne/86f25d29a5a8a69a7aab). the one that you suggested somehow is not memory safe in release mode in my machine and I cant figure out why exactly.