NEW: Add Thumbnails to 'Choose another file' dialogue

Very difficult to choose an image based on file name alone. Added thumbnail and reduced rows from 10 to 8 to compensate for increased height of rows with thumbnail included.
Fix: Enable delete button for users with canDelete() but no canEdit() permissions

$form->makeReadonly(); iterates over all fields/actions, disabling the 'delete' button even when the user has permission
BUG Trigger TinyMCE onChange more frequently

Periodically check for inline changes when focused,
since TinyMCE's onChange only fires on certain actions
like inserting a new paragraph, as opposed to any user input.
This also works around an issue where the "save" button
wouldn't trigger if the click is the cause of a "blur" event
after an (undetected) inline change. This "blur" causes onChange
to trigger, which will change the button markup to show "alternative" styles,
effectively cancelling the original click event.
BUG Correct relation saving in DataObject->duplicateRelations()

This caused problems when duplicate() was used in the CMS UI
to duplicate a SiteTree object. Since every object of this type
has a ParentID relation, it copied this empty relation into
new "ghost page".

See https://github.com/silverstripe/silverstripe-cms/issues/689
Behat: New fixture notation in "manage files" tests
Behat: Support for TreeDropdownField
Behat fixture refactoring (shared factory instance)
Behat: Copy fixture identifier to "Name" or "Title" by default

This makes fixture setup less verbose, particularly for behat
tests (e.g. with "Given a page 'About Us'")
Behat: Use explicit fixtures
Merge remote-tracking branch 'origin/3.0' into 3.1

Conflicts:
	tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsUiContext.php
Enhancement: replaced privete with protected in order to have MySQLDatabase class extensible
Behat: Fixed step notation
BUG Accept $limit=0 in SQLQuery->setLimit()

SQLQuery->setLimit(0, 99) should result in "SELECT ... LIMIT 0 OFFSET 1".
In fact it does "SELECT ..." without a LIMIT clause at all,
which is unexpected. This is regardless of the $offset value.
Merge pull request #2067 from chillu/pulls/sqlquery-zero-limit

BUG Accept $limit=0 in SQLQuery->setLimit()
 Ensure Cookie::get() will immediately return results.

Without this change, a call to Cookie::get() immediately after Cookie::set()
won't return the value provided.  This creates some unintuitive edge-cases,
although to date it looks like they have been worked around.

The patch doesn't have a test because our testing framework doesn't deal
with cookies well.
Merge pull request #2068 from sminnee/cookie-fix

 Ensure Cookie::get() will immediately return results.
MINOR: equality check consistency

Updated all equality checks to use double equals (==) for consistency.
API Removed user_error when setting missing option on UploadField via setConfig. Added documentation to this function as a replacement for the check.
BUG Fixed dropdown step definition for "preview" dropdowns

Broke after I optimized it to work with a TreeDropdownField
which assumes <li><a> structures that thie "preview" dropdowns
don't have. I also failed at the recursion assignment, causing
infinite loops...
Behat: Adding context for 'Given I should not see a "xxx" button'