[FEATURE propertyBraceExpansion]

Add support for brace-expansion in dependent keys, observer and watch
properties.  The complete list of methods with this support is as follows:
- computed
- reduceComputed
- addObserver
- removeObserver
- addBeforeObserver
- removeBeforeObserver
- watch
- unwatch

This is most useful with array computed properties, although it is supported in
other cases.

Example:
```js
// The following two are equivalent
Em.O({
  filtered: Em.computed.filter('list.@each.propA', filterFn).property('list.@each.propB')
});

Em.O({
  filtered: Em.computed.filter('list.@each.{propA,propB}', filterFn)
});

// The following two are equivalent
obj = {};
observer = function() {};
Ember.addObserver(obj, 'foo', observer);
Ember.addObserver(obj, 'bar', observer);

Ember.addobserver(obj, '{foo,bar}', observer);
```
[BUGFIX beta] Allow a reduceComputed to have an undefined initialValue.

- Stop `ReduceComputedProperty.prototype.initialValue` from asserting
  that a reduce computed's initialValue must not be undefined.
- Modify `Ember.reduceComputed`'s assertion that initialValue be present
  to check that the initialValue is in options instead of isNone.
- Add a test that relies on an undefined initialValue to pass.
- Add a test that an error is thrown when you define a reduceComputed
  without an initialValue property.
Decamelize handles strings with numbers
Merge pull request #3551 from bradleypriest/decamelizenumber

Decamelize handles strings with numbers
Fix one failing IE 6/7 test - Issue #3525
[BUGFIX beta] Soft-deprecate mixed binding syntax in view helper

Someone on IRC got bit by 97dc83b4a5f869c9f86fe8144d4faf168ca41a50,
and I'm sure there will be others, due to doing something like
{{view Ember.View somethingBinding=unquotedPropertyPath}}, which
with the above commit create a binding on the view object
from `somethingBinding`=>`unquotedPropertyPath`, vs. the
(incorrectly but understandably) expected 
`something`=>`unquotedPropertyPath`. This commit will support
the mixed syntax for now but warn the user about it.
Fix another IE test issue - Issue #3525
Added support for jQuery as a `require` module
Should not reference global `Handlebars` object, use `Ember.Handlebars` instead
Merge pull request #3556 from sebastianseilund/handlebars-no-global

Should not reference global `Handlebars` object, use `Ember.Handlebars` instead
Merge pull request #3555 from sebastianseilund/jquery-require

Added support for jQuery as a `require` module
Comment out unenforceable `run.later` ordering tests

Fixes #3526
Comment out more unenforceable `run.later` tests

Fixes #3522
[BUGFIX beta] Fix IE 6/7 RenderBuffer issue

IE 6/7 has a bug that prevents the 'name' attribute from being properly set on
an 'input' created with 'createElement'. This provides a workaround by using IE
specific `createElement` behavior that allows a tag string to be passed to
`createElement` instead of just a tagName.

Fixes #3525
Merge pull request #3518 from jamesotron/reduce-computed-undefined

Remove reduceComputed's requirement that initialValue not be undefined.
Merge pull request #3553 from wagenet/ie-render-buffer-fix

Fixes to RenderBuffer for IE6/7 - Fixes #3525
[BUGFIX beta] Fix error with $.focus() on Firefox.

Firefox does not support calling `.focus()` if the window itself does
not have focus.

Resolves #3521.
Merge pull request #3563 from rjackson/fix_firefox_error

[BUGFIX beta] Fix error with $.focus() on Firefox.
[BUGFIX beta] Move test to more reasonable module.
[BUGFIX beta] uniq reduceComputed dependent keys.

If property brace expansion is enabled, there is never a need to have duplicate
dependent keys.  However, with proeprty brace expansion disabled, it is the only
way to specify multiple item property keys, as in the following:

```js

var obj = Em.Object.createWithMixins({
  items: Em.A([{ foo: true }, { bar: false }, { bar: true }]),
  countFooOrBar: Em.reduceComputed({
    initialValue: 0,
    addedItem: function (acc, item) {
      if ( get(item, 'foo') || get(item, 'bar')) {
        ++acc;
      }
      return acc;
    },

    removedItem: function (acc, item) {
      if ( get(item, 'foo') || get(item, 'bar')) {
        --acc;
      }
      return acc;
    }
  }).property('items.@each.foo', 'items.@each.bar')
});
```

Of course, with property brace expansion, it would be better to write the
dependency as `property('items.@each.{foo,bar}')`.

Fix #3554.