JSON marshal out should always call 'json_data()'

During a recent refactor this function was changed to recurse directly
instead of through the helper function.  Fix it.
Merge pull request #27 from samv/master

JSON marshal out should always call 'json_data()'
Bump version for release

Should get around to making a changelog...
visitor: fix default reduce_collection function

This function relied on the new Collection.colltype() to construct a new
collection; however that will be the underlying collection type (eg list,
dict) which does not understand normalize's tuple protocol.  Allow access
to the tuple-to-native-collection logic using a new 'coerce' flag to
tuples_to_coll.
visitor test: work around datetime timezone SNAFU

♫ tonight, we're gonna party like it's ♪
♩ (time_t)1e9 ♫
Another point release
Merge pull request #28 from samv/fix-visitor-lists

Fix visitor lists
Export type variants

Pylint will complain when importing properties like `LazyUnicodeProperty`. Adding these variants to __all__ fixes that issue.
Merge pull request #29 from jlynn/master

pylint interoperability enhancement from John Lynn
Simplify __all__ export

Removed the intermediate private variable
Lazy Properties should be safe by default, too

No reason to exclude them here.  Get rid of the "Slow" intermediate
Property type as well; it confused far more than it DRY'd
Automatically mix Property types together as needed

When creating a new Property type via make_property_type, it was
necessary to choose the "computed" Property sub-type.  This is because
the Property() constructor was not able to create subclasses.  Also, I
was not sure that blindly mixing together Property subclasses without
providing resolution methods would work in the general case.  However,
after much work with it, the task of manually creating all of these
combinations of Property sub-classes (which will, in general, simply use
'pass' as the implementation) completely sucked.

So, write a function to create combinations of Property types, as they
are declared.  At the stage where we would have thrown an exception
before, try to call it.  Remove most of the old empty classes that
worked around this feature not being there.  What could possibly go
wrong?

Also, 'lazy' traits became safe by default, and the 'slow' trait was
killed.
Enhance make_property_type to not require the base type to be correct

This function did not alter the behavior of the metaclass, which meant that
if you passed in keyword arguments which affected the type of Property
returned, it might not work properly.  Pass the extra keyword arguments
through to somewhere the __new__ method can see it, and pass it through to
_has()
Only select SafeProperty IF a type constraint exists

Previously, the only way to avoid getting the 'safe' trait was to
pass ``traits=['unsafe']`` to the Property() constructor.  This was a
suitably guarded safety latch, however if the user of the property
didn't pass any kind of type constraint (eg, required, isa, check),
then there was no need to use safe.  Make it check, and also update the
tests where they needlessly cared.
Merge pull request #30 from samv/autotraits

Autotraits - death to "which property type do I need to derive?"
Doc tweaks for new SafeProperty behavior
Include the attribute name in AttributeError

eg, if there was some code like 'object.foo or object.bar', and it throws
AttributeError, it's helpful to know the attribute which was absent.  This
makes it throw:

    >>> import normalize
    >>> class Foo(normalize.Record):
    ...     bar = normalize.Property()
    ...
    >>> Foo().bar
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "normalize/property/__init__.py", line 171, in __get__
        raise AttributeError(self.fullname)
    AttributeError: Foo.bar
    >>>
Fix MultiFieldSelector on JsonRecordList objects

Due to the overridden __init__, this type does not accept pre-boxed values
during construction.  Pass instead to the values= 'attribute', if selecting
from a ListCollection.
Fix pickling of JSON data

Needs a test case to demonstrate the problem, but basically __getnewargs__
is going to pass a marshalled dict back to JsonRecord's __init__, which
expects it not to be marshaled yet.  Switch to __getstate__ and
__setstate__ instead, and make a new sentinel constructor arg which means
"don't check required attributes".
Another release, another documentation section filled out

We don't want our users to end up hating us.  A few classes are marked
private, and some virtual class properties made less explodey.