Fix array watching issue. Was affecting more than just plain arrays due to differences between typeOf and isArray.

Also made the watching related functions' return values consistent.

TODO: write tests for this
Move Ember.typeOf to metal

*sigh* it's been a long day...