Handle wrong keys better. Fixes #3 and #15

This PR fixes problems for wrong keys (see 2 bugs reports).

I simply removed a case which is always handle afterwards.

More precisely, if a key is missing, instead of sometimes stopping there and sometimes reporting the set of missing mandatory keys, now it always reports the set of mandatory keys.

    >>> Schema({'foo': str, 'bar': str}).validate({'foo': 'blah'})
    Traceback (most recent call last):
    …
    schema.SchemaError: missed keys set(['bar'])
    >>> Schema({'bar': str}).validate({'foo': 'blah'}) # I fixed unit test for that one
    Traceback (most recent call last):
    …
    schema.SchemaError: missed keys set(['bar'])



The only case where it stops before for “missing” keys is when in fact the key was present but failed internally; I changed the error message in that case to be clearer.

    >>> Schema({'foo': str}).validate({'foo': 42})
    Traceback (most recent call last):
    …
    schema.SchemaError: invalid value for key 'foo'
    42 should be instance of <type 'str'>

By the way, I could make sense to make the error message for wrong keys clearer as well, I don't really understand it right now… but maybe it's me

    >>> Schema({'key': 5}).validate({'key': 5, 'n': 5})
    Traceback (most recent call last):
    …
    schema.SchemaError: wrong keys {'key': 5} in {'key': 5, 'n': 5}