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.
Instead of these 3 arguments, you can use `ParseResult<Payload>`. Let me check and get back to you. Could you fix the other comments in the meanwhile? Thanks.