Merge pull request #310 from plq/master

ComplexModel updates
Properly handle >6 digit datetime and time microseconds. #312
some harmless maintenance to the dictdoc shared test suite.
add child freq validation test.
some more harmless changes for the http test.
clean up and add docstring to protocol.dictdoc._fill
check_freq_dict => _check_freq_dict, moved validate_freq test outside.
added http validation tests.
added cascade as argument to model.complex.table to be directly passed to sqlalchemy.orm.relationship
lots of new validation tests that pass with a simpler _fill function.
switch to BFS for simple_type_info generation.
minor.

Rename argument class_ => cls of _object_to_doc of HierDictDocument
minor
make get_object_as_{json,yaml} actually use JsonDocument and YamlDocument protocols respectively.
fix {append,insert}_field not working much due to with get_{simple,flat}_type_info being memoized
minor
make Html* handle non-wrapped values.
fix log_repr rendering Array() arrays.
harmless renames
make hier_repr work with objects with circular references