Include class based properties and set ref/type properly

Please see the demo example. It returns a `User` from a `GET`

`User` has a property of `Address` which wasnt included in the JSON.

'User' was being set as `$ref`previously which is incorrect if its a top level model for an operation it should be `type`

This PR now inspects properties of models to see if they are classes eg/ `Address` and includes those as a `$ref` whilst also including them in the JSON output. Here is the sample:

```
{
    "swaggerVersion": "1.2",
    "basePath": "/",
    "apis": [
        {
            "path": "/users",
            "operations": [
                {
                    "method": "GET",
                    "summary": "The list of users",
                    "notes": "This returns a list of users from our awesome app",
                    "nickname": "GetUsers",
                    "parameters": [],
                    "responseMessages": [],
                    "produces": [],
                    "consumes": [],
                    "type": "User"
                },
                {
                    "method": "POST",
                    "summary": "Create a User",
                    "notes": "Creates a user with the shown schema for our awesome app",
                    "nickname": "PostUsers",
                    "parameters": [
                        {
                            "paramType": "body",
                            "name": "body",
                            "description": "A User object",
                            "required": true,
                            "type": "User"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 201,
                            "message": "Created a User"
                        },
                        {
                            "code": 422,
                            "message": "Invalid input"
                        }
                    ],
                    "produces": [],
                    "consumes": [],
                    "type": "User"
                }
            ]
        }
    ],
    "models": {
        "Address": {
            "id": "Address",
            "properties": {
                "Address1": {
                    "type": "string"
                },
                "Address2": {
                    "type": "string"
                },
                "County": {
                    "type": "string"
                },
                "PostCode": {
                    "type": "string"
                },
                "Town": {
                    "type": "string"
                }
            }
        },
        "User": {
            "id": "User",
            "description": "A user of our awesome system!",
            "required": [
                "Age",
                "DateOfBirth",
                "Name"
            ],
            "properties": {
                "Address": {
                    "$ref": "Address"
                },
                "Age": {
                    "description": "The user's age",
                    "type": "integer",
                    "format": "int32",
                    "minimum": 1,
                    "maximum": 100
                },
                "DateOfBirth": {
                    "type": "string",
                    "format": "date-time"
                },
                "Name": {
                    "description": "The user's name",
                    "type": "string"
                }
            }
        }
    }
}
```
This should address #34 and #36 and improves #35 

This also uses `ISwaggerModelDataProvider` for these classes that are properties of the main model.

**NOTE:** I don't know whats going on with line endings in `SwaggerMetadataConverter`. I've done a PR for a `.gitattributes` file in the repo.