Add @typedef support to haruki templates

Adds `@typedef` to the output. Fairly straightforward. Might look something like this:

```
{
    "typedefs": [
        {
            "name": "MyType",
            "type": "Object",
            "description": "My special type Object.",
            "properties": [
                {
                    "name": "stuff",
                    "type": "boolean",
                    "description": "A thing.",
                    "default": "",
                    "optional": "",
                    "nullable": ""
                },
                {
                    "name": "things",
                    "type": "array",
                    "description": "array of things",
                    "default": "",
                    "optional": "",
                    "nullable": ""
                },
                {
                    "name": "junk",
                    "type": [
                        "boolean",
                        "string",
                        "Object"
                    ],
                    "description": "Some junk",
                    "default": "",
                    "optional": "",
                    "nullable": ""
                }
            ]
        }
    ]
}
```