ENHANCEMENT: allow overridable JS/CSS minification

This allows someone to extends Requirements_Backend and plug in their own minification
of files, including CSS minification.  It also allows them to override whether or not
the header comment is written for each file.
Behat: Backport improved dropdown step handler
MINOR: equality check consistency

Updated all equality logic checks to use double == for consistency across the page.
Merge pull request #2069 from stevie-mayhew/patch-1

MINOR: equality check consistency
Test $allowed_actions on controllers with template name=action conventions
Fixed Tab floating in CMS (fixes #1778)

Removed inline-block from header elements which seems
to cause the issues of tabs stacking on top of each other.
Replaced header background to work on multiline scenarios
Added bottom margin to breadcrumbs so they don't look cramped
when tabs are floated below them.

See https://github.com/silverstripe/silverstripe-framework/pull/1863,
https://github.com/silverstripe/silverstripe-framework/issues/1943,
https://groups.google.com/forum/?fromgroups#!topic/silverstripe-dev/c-W-ZxDlDuA,
http://open.silverstripe.org/ticket/6882
Always load preview when in preview mode, not in edit mode
API New CMSForm class to allow validation responses in CMS (fixes #1777)

Thanks to @willmorgan for getting this discussion started
(see https://github.com/silverstripe/sapphire/pull/1814).
Consistent Form setters (returning $this on setHTMLID())
LeftAndMain.js: Fix 'X-Reload' for IE10 (fixes #647)
BUG Resize infinite loops in IE8 (fixes #575)

IE8 gets a bit confused and fires resize events
when element dimensions in the DOM are changed
as a result of a resize event, causing an infinite loop.
Apart from artificially throttling the event, the only solution
I've found is to check for actual window dimension changes.
http://stackoverflow.com/questions/12366315/window-resize-event-continually-fires-in-ie7?lq=1

This implicitly fixes an issue where TreeDropdownField panel isn't
accessible in the "Insert Media" popup, because the resize event happes
to be triggered by the popup overlay, and in effect closes the drop down
panel right after opening it.

Relating to the jQuery UI component, there's a host of issues and discussions around this, but no solution…
http://bugs.jquery.com/ticket/4097
http://bugs.jqueryui.com/ticket/4758
http://bugs.jqueryui.com/ticket/4065
http://bugs.jqueryui.com/ticket/7514
http://bugs.jqueryui.com/ticket/8881
https://groups.google.com/forum/?fromgroups#!topic/jquery-ui/fDSvwAKL6Go
http://www.mail-archive.com/jquery-ui@googlegroups.com/msg04839.html
Min/max constraints for CMS dialog
Fixes a translation issue where a parameter isn't replaced.

Whenever File::Validate() failed due to an illegal file extension, it printed the translated message without replacing the parameter {extensions}.
Merge pull request #2090 from chillu/pulls/tabs-float

Fixed Tab floating in CMS (fixes #1778)
Merge pull request #2095 from CheeseSucker/patch-1

Fixed a translation issue for File.INVALIDEXCEPTION
Fixed HtmlEditorField.js editor instanciation

Wasn't parsing data-editor attrs correctly.
Using proper instances of the underlying editor now,
instead of relying on "active editor" states which get
wonky once they lose focus (e.g. when opening a dialog).
ENHANCEMENT: Allow programmers to set OwnerID for new files.

NOTE: This change should be reviewed to make sure it does not cause any side effects.

Example use case: 
    An admin porting user images from an old website.
    The script would put the images in the assets folder,
    and then insert them into the database using Image::write()
    and data from the old database.

public function insertImage($data) {
    $image = new Image();
    $image->ParentID = $data->parentId;
    $image->Title = $data->title;
    $image->FileName = $data->filename;
    $image->OwnerID = $data->ownerId;
    $image->write();
    
    // In the current version, this results in all images
    // being owned by Member::currentUser() instead of 
    // the expected $data->ownerId;
}
Merge pull request #2096 from CheeseSucker/patch-1

ENHANCEMENT: Allow programmers to set OwnerID for new files.
[MINOR] Typo
Coding conventions, PHPDoc cleanup