add Corpus & CorpusMeta to ext.unittest

for succinctly preforming many simple input/output matching tests
add UTCDateTime that preserves original offset

while otherwise acting like a tz-naive datetime
that is implicitly in UTC

also rename ISO8601Property to UTCDateTimeProperty
give UTCDateTimeProperty ability to read its own output

- split UTCDateTime into separate corehq.ext.datetime module
- minor cleanup to UTCDateTime
- give option to pass in tz string instead of timedelta for UTCDateTime original_offset
- change UTCDateTime repr to use tz string notation for succinctness
add UTCDateTime.to_datetime function

for converting back to a normal timezone-aware datetime
use pytz instead of iso8601 where possible
add docstrings UTCDateTime and UTCDateTimeProperty
document Corpus helpers
add UTCDateTime tests for < > <= >=
fix and test bug in ISOMeta
carefully exclude timezone hint in UTCDateTimeProperty

when no timzone is given
datetimes are still treated as UTC, but the original_offset is given as None
and the timezone hint (+00:00) is excluded from the output format
remove Z from UTCDateTimeProperty output for naive datetimes
use __name__ instead of func_name
make UTCDateTime.__eq__ follow datetime standard

make certain tests use exact_equals for comparison instead

also improve corpus test docstrings slightly
clean up corehq.ext.jsonobject round trip tests slightly
fix couchforms tests, given new UTCDateTimeProperty