Allow overriding the firstObject/lastObject notification implementation

Created Em.Array#arrayFirstLastObjectChange abstraction in order to be able to override the Em.Array#firstObject/lastObject notification implementation which by default calls #objectAt(0) and #objectAt(length-1).

These calls are not optimal in case of e.g. sparse RecordArrays which would trigger unnecessary content[index] requests.