Rules for dictionary keys

implements #10 

* [x] Make the cases from the issue work
* [x] Add a more informative error message (see comments)
* [x] Thoroughly document semantics including the differences between these cases:
  * `{'foo': int}` vs. `{optional('foo'): int}` vs. `{'foo': optional(int)}`
  * `{str: 'foo'}` vs. `{'bar': str}`
  * the peculiarities of `rule.default` re dict keys (maybe we can simplify them instead of documenting?)
* [x] Fix the damn PyPy on Travis (or temporarily drop support for PyPy)

List of **backwards-incompatible changes**:

* Renamed exception monk.errors.UnknownKey to InvalidKey
* Removed argument dict_allow_unknown_keys from Rule constructor