Use dictionary iter methods

I've been taking advantage of the fact that Simon currently doesn't
support Python 3 to use `dict.iteritems()`. Just like `iteritems()`,
dictionaries have other iter methods, namely `iterkeys()` and
`itervalues()`. Calls to `keys()` and `values()` are being changed where
appropriate.
Enforce that typed_fields are all types

When fields are included in the `typed_fields` meta option, they can
either be set to `None` or a type. Originally this wasn't enforced. This
check will prevent a `Model` from being defined with an improper
`typed_fields` setting.
Add support for untyped typed fields

Say what?

With this change, `None` can be used as a value in the `typed_fields`
meta option instead of a type to say that the field is untyped. While
this is the behavior when a field isn't added to `typed_fields` at all,
it can be used to say that `_id` should not be typed as an Object ID.

There currently is no code to support this, but it's something I plan to
add.

References #18