metadata feature: improve documentation to document nested properties and support multiple values

This pull request allows to reuse Swagger documentation attributes to provide much better metadata documentation.
* Updated metadata feature generating documentation to recursively process all properties of DTO object and generate documentation for all used types
* Added support for ApiAllowableValuesAttribute

I wasn't 100% on which code can be correctly reused from Swagger, so there is duplication.