Relax type checking

Duck typing is very Pythonic! I want to be able to pass anything that looks like a Sequence or Mapping in the appropriate parts of my document and have Cerberus traverse it correctly. Therefore, this pull request suggests we use the more generic `Sequence` and `Mapping` types in place of `list` and `dict`. The only special case we deal with is that if we expected a `Sequence` from someone, we'll also check explicitly that it wasn't a string, as this seems to be a likely common error to me.

As always, see what you think and let me know. This will ultimately enable me to produce a mock-like object which inherits from `MutableMapping` that can do interesting things on attribute getting and setting, but still validate nicely.