Swagger

Hi,

I realised that there was an issue with my ordering when the hierarchy was deeper than 2 levels.  I've expanded the test to ensure it's fully correct.

`GetModelPropetyName()` now also uses `[DataMember].Name` when it exists, otherwise continues on as normal.

(I initially thought the `[DataMember].Name` was set [here](https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Api.Swagger/SwaggerApiService.cs#L479) but upon closer inspection, it seems the change was necessary?)