Add create_sid to session_set_save_handler and SessionHandler

A lot of code already existed to allow a custom create_sid handler, but
lacked a specific implementation.

Therefore I have added a 7th (optional) argument
session_set_save_handler, to allow a user function to be supplied for
session id generation.

If a create_sid function is not supplied, the default function is
called in its absence to preserve backwards compatibility.

Likewise create_sid only added to SessionHandler class, and not the
interface to maintain backwards compatibility. If the result is not
overridden, the default is called.
Tests, fixes and optimisations

* Amended existing tests to cater for new functionality.
* Implemented fixes and optimisations recommended by NikiC
* Added create_sid to the registered interface. This was breaking
tests. It also now breaks BC for people implementing the interface
directly instead of extending the class.
Fixed bug #65136 (RecursiveDirectoryIterator segfault)
Merge branch 'PHP-5.4' into PHP-5.5
Update NEWS:w
Merge branch 'PHP-5.5'
Merge PR 109 - Add create_sid to session_set_save_handler and SessionHandler

Allows user session handlers to create session IDs by adding an optional
7th argument to session_set_save_handler() and a create_sid() method
to SessionHandler.
BC fix for PR 109 merge - create_sid() method in SessionHandler

Creates a new SessionIdInterface and moves create_sid() into it, so existing
handlers implementing SessionHandlerInterface don't require create_sid().
SessionHandler still includes the method so the default mod can be called, but
now implements both interfaces.

Also added several more tests for this feature.
Update NEWS
Fixed symbol export

That's needed for baabd1192973156ac79c35f6d1b0dced4af8e8fb to link
properly.
Add create_sid to session_set_save_handler and SessionHandler

A lot of code already existed to allow a custom create_sid handler, but
lacked a specific implementation.

Therefore I have added a 7th (optional) argument
session_set_save_handler, to allow a user function to be supplied for
session id generation.

If a create_sid function is not supplied, the default function is
called in its absence to preserve backwards compatibility.

Likewise create_sid only added to SessionHandler class, and not the
interface to maintain backwards compatibility. If the result is not
overridden, the default is called.
Tests, fixes and optimisations

* Amended existing tests to cater for new functionality.
* Implemented fixes and optimisations recommended by NikiC
* Added create_sid to the registered interface. This was breaking
tests. It also now breaks BC for people implementing the interface
directly instead of extending the class.
BC fix for PR 109 merge - create_sid() method in SessionHandler

Creates a new SessionIdInterface and moves create_sid() into it, so existing
handlers implementing SessionHandlerInterface don't require create_sid().
SessionHandler still includes the method so the default mod can be called, but
now implements both interfaces.

Also added several more tests for this feature.
Fix bug #62535 - $_SESSION[$key]["cancel_upload"] doesn't work as documented

When uploading multiple files, the array in the session where the progress
data is stored (and cancel_upload key is set) was overwritten whenever the
progress data was updated, so pending uploads would proceed anyway.
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  Fix bug #62535 - $_SESSION[$key]["cancel_upload"] doesn't work as documented
Merge branch 'PHP-5.5'

* PHP-5.5:
  Fix bug #62535 - $_SESSION[$key]["cancel_upload"] doesn't work as documented
  Update NEWS
  BC fix for PR 109 merge - create_sid() method in SessionHandler
  Tests, fixes and optimisations
  Add create_sid to session_set_save_handler and SessionHandler