Implement datetime timezone constraints (#343)
This implements support for constraining datetime objects based on them
having or not having timezone info. The aware kind constrains to objects
that have timezone info, and symmetrically, the naive kind constrains to
objects that do not have timezone info.