Removes layer observer from SC.ImageView and use didCreateLayer callback instead.
Fixes a problem with SC.ImageView and static layout that was hacked around and fixes a bug where starting with no value and then adding a CSS sprite value.

Conflicts:
	frameworks/foundation/render_delegates/image.js
Removes two display observers from SC.ImageView and drops undocumented support for setting the value of an image as an array (which was parsed out into a single value for some reason.

Conflicts:
	frameworks/foundation/views/image.js
Adds support for sprite images based on canvas.  This fixes a bug when changing between a sprite and a URL type with the same image that created duplicate elements in the DOM.

Conflicts:
	frameworks/foundation/render_delegates/image.js
Prevents problems with erasing class names when switching between CSS and URL image types.
Fixes regression that failed to clear canvas based image views when the value goes to null.
Removes unneeded code and unnecessary DOM manipulation, since the canvas render delegate can support the CSS type too now.
Implements @aaronk6's ticket #992 - bad IE version check when deciding whether data URIs are supported.
Removes the restriction that render delegate data sources can only retrieve displayProperties properties.  This restriction is not especially helpful, but worse than that, it forces us to have excess display properties, which means excess observers being set up and running although not every property that effects the display necessarily needs to be observed.  For example, SC.ButtonView has several internal observers on properties that are also display properties.  It's more efficient to use those same observers to call displayDidChange and not have the properties also be display properties.

Conflicts:
	frameworks/desktop/render_delegates/image_button.js
Removed useless .fmt() calls.
Verify that text field has focus before selecting text.

Having multiple text fields that had selection bound was causing an infinite
loop. _selectRootElement, called in an invokeLast, would change focus
repeatedly between the text fields. Verifying that the text field
actually still has focus when the function is called fixes this.
Fixes SC.ArrayController so that firstObject, firstSelectableObject and lastObject update properly when swapping out the content.  This also ensures that when allowsEmptySelection is false, that the selection changes to the new first object when the content is swapped.

Conflicts:
	frameworks/core_foundation/controllers/array.js
Fixes a problem which kept firstObject and lastObject referenced from an array controller from updating on replace. Also fixes a problem updating lastObject on an enumerable when replacing the last items and shrinking the collection. Closes #979, closes #980.

Conflicts:
	frameworks/core_foundation/controllers/array.js
Fixed issue with SC.RecordArray not invalidating firstObject/lastObject.

SC.RecordArray was not calling enumerableContentDidChange when the
storeKeys changed, so firstObject and lastObject were not being
invalidated.
Adds SC.set and SC.setPath.

SC.get and SC.getPath already exist, this adds corresponding SC.set and
SC.setPath functions.
Bumping to SC 1.9.0.17.