[WIP] Tree decl

:warning: Still working out the details :warning:

Don't bother examining the details.

But the idea is:

```hs
data Declaration :: * -> * where
    DecNode :: k -> Identifier -> DecFNode -> [Declaration k] -> Declaration k
    DecLeaf :: k -> Identifier -> DecFLeaf                    -> Declaration k
```

Then in Clang.hs instead of
```hs
Just $ TypeAlias (Identifier $ getCursorSpelling c) (Type "foobar")
```
You can do
```hs
Just $ DecLeaf comment (Identifier $ getCursorSpelling c) (TypeAlias (Type "foobar"))
```
But if you used a `Class` instead of a `TypeAlias` it would be a **TYPE ERROR™** (Because a `Class` can not be a leaf, it has contents inside of it).
**MAGIC**