Refactored Polymer-vs-non-Polymer in spark.dart using abstract hierarchy vs isPolymer()

This is a part of a complex CL to fix the currently broken Polymer UI.

@devoncarew