Pr/3098

I've fixed up https://github.com/silverstripe/silverstripe-framework/pull/3098, rebased it, squashed the commits, fixed the test cases, and made a few API suggestions.
I can understand what this line does, but I don't understand why this method is being used instead of session_destroy or similar.