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.
Okay. Thanks @zdne. The following structure is what I think is better than the above two.

```
    /** Reference */
    struct Reference {

        /** Reference Resolution State */
        enum State {
            StateUnresolved,    // Reference unresolved (undefined)
            StatePending,       // Reference resolution pending
            StateResolved       // Reference resolved successfully
        };

        /** Reference Type */
        enum ReferenceType {
            SymbolReference
            FileReference     // This line is an example, don't add this yet
        };

        /** Identifier */
        std::string identifier;

        /** Type */
        ReferenceType type;

        /** Markdown AST reference source node (for source map) */
        mdp::MarkdownNodeIterator node;

        /** Reference resolution state */
        State state;
    };
```