Fix a double fault in the Visitor

KeywordExceptionFormatError was caught; fix up the exception code to
pass the right format strings in.
Include the suppressed exception in VisitorPropError

Makes it easier to guess what could be wrong, hopefully.
New exception: VisitorGrokRecordError

In the case where a string is received where a record is expected, it
ends up throwing ``TypeError: string indices must be integers, not str``
Throw this error instead.
Add a FIXME note
visitor: pass correct visitor instance into map

Passing the outer visitor object meant that the displayed path was
missing bits.  Pass the one we just took a copy of into this function.
Nonzero: empty collections should be false, too

Empty collections were previously false because the default python rule
would fall back to __iter__, and return false if it returned nothing.
Allow this to continue to work, by logically or'ing the length of the
collection and the emptiness of the record.
Collections are always safe

Collections know their valuetype, so always add the safe trait.  Add a
facility for types to hook into the conditional safe-ness implemented in
the property metaclass.  Previously they would only get Safe if the
declaration included a type definition (isa, check, required).
Visitor: accept 'filter' as well as 'visit_filter'

It's kind of awkward using 'visit_filter' for 'cast' operations; allow the
neutral synonym 'filter'.
Visitor: permit 'literal' field selectors as filters

Carry across the input relaxation from diff: if the filter is a tuple, then
use it to make a MultiFieldSelector.
Visitor: grok safely for friendlier exceptions

Previously, the code would "duck type" (that's what just carrying on and
hoping the input responds to whatever methods you expect it to, right?).
This could lead to some confusing errors when bad input was given, so let's
go ahead and add some type checks here with friendlier exceptions telling
you the path into the input the bad values were found.
Changelog 0.5.5 release
Merge branch 'maint'
Merge branch 'master' into next

Conflicts:
	CHANGELOG.rst
	normalize/exc.py
	normalize/visitor.py