when shadowdom and/or customelements are native

Now works in Firefox, Chrome, Chrome canary, *and* Safari.

@ScottDowne @flukeout if you guys want to give this a look over to see if there are things that are broken now, that'd be awesome.

Things left to check:
* [ ] which bits aren't showing up due to missing CSS
* [ ] which bits aren't showing up due to JS binding no longer working the same
* [ ] safari and IE11 seem to work just fine now. Is this *actually* the case?

lessons learned: LESS doesn't like /deep/, refactoring to avoid it as much as possible is a great thing. CSS has been moved into the elements to which it applies insofar as that was possible, so CSS for something like a `ceci-broadcast-vis` element is inside that element's `<template>` now, instead of living in our massive style.less/style.css

Followups for this PR will have to be "rip up style.less into role-defining separate files as much as possible", so that maintenance and future refactors are easier

Things I'd like to still fix before merge
* [ ] Not happy with the two-pass shim for CustomElements, but it relied on detecting the native impl. *before* platform.js is loaded, because once that's loaded things try to hit document.registerElement and it needs to be shimmed before that happens. Not sure if i can somehow get rid of the secondary shim, but worth looking into.
* [ ] This still needs verification in terms of publishing - layout.ejs does not make it into a published app so we likely need to shim more/in more places.
* [ ] verify whether we can tap into only CeciDefinition rather than needing `.registry`