Disallow overlapping binders in value declarations

This fixes #533; now the following cases fail to parse entirely:

```haskell
-- 1
test x x = x

-- 2
data Foo x = Foo x
test x@(Foo x) = x
```