BlueprintParser refactor

@zdne Can you review this branch and merge it with `pksunkara/refactor`? I need this to be done in order to check for global duplicate in `ResourceGroupParser.h`.

Also, please check my questions on the diff below. Thanks.
I think this `parseMetadata` should behave as any other `parse` function, that is, return a MarkdownNodeIterator which should be used as a next node to process. The way it is written right now assumes that parseMetadata process just one node (which is correct for now) but should really be driven by the metadata parser as the single point of truth. We can also turn it into a dedicated metadata section parser...