MSON Signature parsing foundation

This pull request adds a `SignatureSectionProcessor` class which can be inherited by certain section processor classes if their signatures follow either of the following 3 formats

- Identifier [`:` Values] [`(` Attributes `)`] [`-` Content]
- Values [`(` Attributes `)`] [`-` Content]
- `(` Attributes `)` [`-` Content]

**Note**: Square brackets mean they are optional

`SignatureSectionProcessor` filled up the `processSignature` with default logic which can be used by the super sections. The super section processor should have a method `signatueTraits` which should return a `SignatureTrait` data structure representing the format of the signature. Similarly, it should have a `finalizeSignature` which takes `Signature` data structure containing the parsed signature data by the `parseSignature`.

The `parseSignature` is the main function which parses the signature according to the given format. It further divides the logic into 3 other functions, `parseSignatureIdentifier` and `parseSignatureValues`, `parseSignatureAttributes`.

We also add a helper function `RetrieveEscaped` to `StringUtility.h` which retrieves the escaped string with the given escape character while respecting any nested escape levels.
This has a linear complexity – passing through all the input file to map a node into a source map. Better avoid it and do the mapping on demand when really needed.