Handle wrong keys better

fixes #3 and #15. 

On top of original pull request https://github.com/halst/schema/pull/18 to improve messages for values, I made the error messages more clear when input contain unexpected keys, e.g.:

```python
>>> Schema({'a':int}).validate({'a': 1, 'bad': 5, 'bad2':None})

Traceback (most recent call last):
...
SchemaError: wrong keys 'bad', 'bad2' in {'a': 1, 'bad': 5, 'bad2': None}
```

P.S. tried merging with  halst:master but the master currently seem partially broken as some tests are failing there even before my merge (probably connected to Optional() fix), so I'll leave the merging out for now...