make sure both headers are set before checking for ip spoofing
fix `test_sqlite3_mem` test run.

marshalling between processes does not work with an in-memory db.
This breaks the `test_sqlite3_mem` run (see stacktrace below).
After that failure most tests start to fail randomly.

```
/Users/senny/Projects/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:512:in `table_structure': Could not find table 'posts' (ActiveRecord::StatementInvalid)
	from /Users/senny/Projects/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:399:in `columns'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/connection_adapters/schema_cache.rb:93:in `block in prepare_default_proc'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/connection_adapters/schema_cache.rb:44:in `yield'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/connection_adapters/schema_cache.rb:44:in `columns'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/model_schema.rb:208:in `columns'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/model_schema.rb:249:in `column_defaults'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/locking/optimistic.rb:171:in `column_defaults'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/core.rb:167:in `initialize'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/inheritance.rb:27:in `new'
	from /Users/senny/Projects/rails/activerecord/lib/active_record/inheritance.rb:27:in `new'
	from /Users/senny/Projects/rails/activerecord/test/cases/base_test.rb:1368:in `block in test_marshal_between_processes'
	from /Users/senny/Projects/rails/activerecord/test/cases/base_test.rb:1366:in `fork'
	from /Users/senny/Projects/rails/activerecord/test/cases/base_test.rb:1366:in `test_marshal_between_processes'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:110:in `block (3 levels) in run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:208:in `capture_exceptions'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:107:in `block (2 levels) in run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:260:in `time_it'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:106:in `block in run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:296:in `on_signal'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:280:in `with_info_handler'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest/test.rb:105:in `run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:268:in `block (2 levels) in run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:267:in `each'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:267:in `block in run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:296:in `on_signal'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:285:in `with_info_handler'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:266:in `run'
	from /Users/senny/Projects/rails/activesupport/lib/active_support/test_case.rb:31:in `block in __run'
	from /Users/senny/Projects/rails/activesupport/lib/active_support/test_case.rb:31:in `map'
	from /Users/senny/Projects/rails/activesupport/lib/active_support/test_case.rb:31:in `__run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:115:in `run'
	from /Users/senny/Projects/rails/.bundle/gems/minitest-5.0.8/lib/minitest.rb:46:in `block in autorun'
```

/cc @tenderlove
Merge branch 'fix-ip-spoof-errors' of https://github.com/tamird/rails into tamird-fix-ip-spoof-errors
Add changlog entry for #10844
Make `.next_migration_number` reusable for third party AR generators.
Merge pull request #12407 from senny/extract_next_migration_number_into_module

Extract `.next_migration_number` into module for third party generators.
change the savepoint interface to allow passing the name.
extract adapter savepoint implementations into `abstract/savepoints.rb`.