Limit the spamminess of default deprecation messages

As discussed in https://github.com/rspec/rspec-mocks/issues/386
Add spec for File deprecation_stream output
Changelog entry
Simplify Hash initialization
Extract classes for File and IO behaviors in DeprecationFormatter
Defer printing deprecation warnings until summary
Remove factory method for DeprecationFormatter
Move away from Struct-based formatter implementations
Use formatter pluralize helper
Refactor deprecation formatter

This cleans up a number of code style and clarity
issues pointed out in the code review comments from
https://github.com/rspec/rspec-core/pull/1029