Refactor tests

* Use pytest syntax to reduce boilerplate
* Move testcase tests into testcases directory

Depends on #26, so will be easier to review when that is merged.
```haskell
map (add 2) xs
map((lambda x : x+2), xs)
```
Actually I found the first one easier to understand here - quicker to parse.