improve performance for template repeat over model objects with shared prototype

This fixes the case presented in: https://github.com/Polymer/polymer-dev/issues/101

The diff includes https://github.com/Polymer/observe-js/pull/73 but I can rebase against master if that one doesn't land first.

What is happening there is we have a bunch of paths inside a `<template repeat>` such as `{{model.path}}`. With polymer-expressions, the model for each repeated item has the same __proto__, which is the containing element, and we don't want every property set there to ping every item in the list. This seems to be the simplest thing that prevents the bug.

(Note: if the property is deleted from rootObj, we should get a change record from rootObj which causes us to iterate all objects again, and at that point, will observe the prototype because it is no longer an ownProperty of rootObj. That won't happen for polymer-expression scopes, but could happen in general.)