implements #8 (closed)

I currently insert braces everywhere, meaning that `printParseableFunctor . parseFunctor = id`

should hold,
`parseFunctor . printParseableFunctor = id`

most certainly does not.

Example output:

```
{n, f}xPX -> {n, f}x(PX)
D({f,n}xPX) -> D({f, n}x(PX))
D({f,n}xP(DX)^{a, b, c}+({f, n}xX + (Z, min)^({f ,n})))
-> D({f, n}x(P(DX))^{a, b, c} + ({f, n}xX + ((Z, min)^({f, n}))))
```