tweak formatter.for_type

- for_type(cls) nondestructively queries the current formatter (previously disallowed)
- for_type(cls, None) clears the current formatter (previously queried current)
exercise formatter.for_type in tests
add lookup logic based on apptools.type_registry

adds

- formatter.lookup(instance)
- formatter.lookup_by_type(type_or_type_string)
- formatter.pop(type_or_type_string)

changes:

- support 'module.name' in formatter.for_type
more formatter type lookup tests
remove use of private type_printers API
add formatter changes to what's new
another pass on formatter lookup

- pop takes a default value (like dict)
- support `type in Formatter`
- allow lookup by type string (for consistency)
update formatter what's new
formatter docstring consistency
Merge pull request #4561 from minrk/for_type_clear

Copied some of the logic from apptools (thanks @rkern).

The current behavior:

- `lookup(instance)` - return appropriate callback or a given object
- `lookup_by_type(type_or_str)` - return appropriate callback for a given type or `'mod.name'` type string
- `for_type(type_or_str)` - behaves the same, only adding support for type strings for consistency
- `pop(type_or_str[, default])` - remove a type (by type or string)
- `typ_or_str in Formatter` checks whether a type is registered, checking with `lookup_by_type`

The inner structures remain unchanged.