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

Conflicts:
	lib/rspec/core/formatters/deprecation_formatter.rb
	spec/rspec/core/formatters/deprecation_formatter_spec.rb
Defer printing deprecation warnings until summary

Conflicts:
	spec/rspec/core/formatters/deprecation_formatter_spec.rb
Remove factory method for DeprecationFormatter

Conflicts:
	lib/rspec/core/formatters/deprecation_formatter.rb
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
Merge pull request #1061 from rspec/limit-deprecation-messages-backport

Limit deprecation messages backport