Merge pull request #1047 from simonwelsh/ns_class_parse

FIX Handle namespaced classes in Object::parse_class_spec()
BUG SS has problems handling + in URLs. Filter them out.

+ has a special meaning in the URLs so overall it's a good idea to
strip them out. Otherwise they would need to appear in their ugly url
encoded form "%2B".

Refer: http://open.silverstripe.org/ticket/7929
Updated changelog notes
BUG removeRequiredField() should use array_splice() instead of unset()

Function unset() preserves numeric keys and method removeRequiredField() will give a PHP notice about nonexistent array key and loop won't iterate throughout all elements in array on second method call (and all subsequent).
So it's better to use foreach loop and array_splice() function (it doesn't preserve numeric keys).
BUG: Right click on LeftAndMain menu caused CMS preview window to open

The onclick event for LeftAndMain menu links didn't check if the click
was left or right, meaning that right click events could trigger the
function for loading split view mode in some browser/os combinations.
Allow HTML in FormField->setDescription()
Fix edge case in which uninitialized buttons are being destroyed.

In certain cases, the button may not yet be initialized or may no longer have button properties at the time of removal from the DOM. Without this check, an uncaught exception is thrown.
BUG Calling DataObject::relField() on a object with an empty relation list

This causes a 'Fatal error: Call to a member function hasMethod() on a non-object'.

This can happen when displaying a field in a gridfield on a belongs_to relationship.
Set 'active' correctly for accordion widget

The accordion widget was previously being passed true and false, where as it either expects true or the integer of the panel to show.

This fix sets it as either false or 0.
API Remove dev/tests/startsession etc, use new "testsession" module

Removed commands: startsession, endsession, sessionloadyml, setdb, emptydb.
See https://github.com/silverstripe-labs/silverstripe-testsession
NEW Show the allowed extensions as a toggle tip as per trac 7993

NEW Added a behat test for showing extension trac 7993
Made hyphen escaping clearer in FileNameFilter and URLSegmentFilter

Does not actually change behaviour, but ensures that the hyphen
is not interpreted as a range identifier should it be placed
between two characters which PCRE regards as "rangeable".
Merge pull request #1058 from chillu/pulls/remove-testsession

API Remove dev/tests/startsession etc, use new "testsession" module
Use preg_replace_callback over preg_replace with e modifier
Merge pull request #1060 from simonwelsh/55-fixes

Use preg_replace_callback over preg_replace with e modifier
BUGFIX Ensure  has length before using string index access.
Remove /e option due to preg_replace_callback use
Adding test for SortColumn to SQLQueryTest

Mostly for the benefit of MSSQLDatabase which is having problems
with subselects and alias functions.
API Default to Upload::$uploads_dir in UploadField
Don't complain about pre-replaced YAML fixture relations