Refine properties handling and add optimizations
Refine properties handling and add optimizations

* `createProperty` now takes a PropertyDeclaration and passes this on rather than having to look it up (optimization). Note, this means we now create properties for superClass properties. Also introduces a map used to store reflecting properties (optimization).
* correct `shouldInvalidate` property option so that it changes the property value but does not cause invalidation.
* renames `identity` to `notEqual` to reflect what it does.

lit/lit-element,lit/lit-element,Polymer/lit-element,Polymer/lit-element,Polymer/lit-element,lit/lit-element