BUG GridState_Data doesn't hold falsey values

After patch #2522 was taken GridField_Data was no longer able to hold
falsey values. See failing tests.
BUG Fixed handing of false values in GridState_Data
API Added ability to unset values
Merge remote-tracking branch 'origin/3.1'
FIX: Fixed regression in ContentController template selection.

https://github.com/silverstripe/silverstripe-cms/commit/47582b3e3c7cad2957087d50b368fddedeeccdfe improved
template selection, but has introduced a regression.  Specifically, it applies to contorllers that are
created by making a direct subclass of Page_Controller (a pattern used in a few modules to make a page
that looks like a CMS page but doesn't appear in the sitetree).  Previously Page.ss would be used as a
template, because when Page_Controller was interrogated in the template stack, the strtok(Page_Controller,_)
was called before looking up the template.

The code was refactored to use SSViewer::get_templates_by_class(), which doesn't do this.  This function
is used by LeftAndMain as well, so rather than re-add the strtok() call, which might cause unintended
side-effects, I've instead just have it ignore _controller in a classname.  Strictly speaking, this is
an API change, but as long as people have followed page type class naming conventions, it will still
work in the relevant cases.
Merge pull request #2881 from sminnee/fix-forum-templates

FIX: Fixed regression in ContentController template selection.
Removing broken reference to "getNextID()"

It doesn't exist.
Merge pull request #2888 from willmorgan/patch-2

Removing broken reference to "getNextID()"
Making Director::test() ignore URL Anchors
Anchors should never make it to the server when they are in the browser URL bar, however tests are slightly different and some `Link()` functions may return a URL anchor. Instead of every test checking a link and stripping the anchor, I feel the Director::test() function should strip them off.
FIX Log out current member when forgotten password

At the moment, if a user is logged in on a device (say, their phone) but has forgotten their password.

If they attempt to reset their password on their desktop, then open the email on their phone they then see the reset password form *with* the CurrentPassword field. I'm not entirely sure what happens if a DIFFERENT user is currently logged in, but I think they remain logged in and you're effectively trying to change their password.

Both scenarios are not ideal and (in fact) this happens a lot in the real world as it's a legitimate complaint we're receiving from a visitors of one of our client's websites.
Merge branch '3.1'

Conflicts:
	forms/Form.php
	forms/FormField.php
	security/Member.php
	security/MemberLoginForm.php
Corrects merge errors.

Closes #2937
Merge pull request #2901 from dhensby/director-test

Making Director::test() ignore URL Anchors
Merge pull request #2818 from tractorcow/pulls/gridstate_data-error-test

BUG GridState_Data doesn't hold falsey values - Fixes #2813
Merge pull request #2907 from dhensby/patch-1

FIX Log out current member when forgotten password
FieldList->insertBefore/After now accept arguments in either order (fixes #2737)