Analytics exceptions

@lukechurch for review

This fixes an issue with parsing dart2js stack traces, and uses [Zones](https://api.dartlang.org/docs/channels/stable/latest/dart_async/Zone.html) to capture uncaught exceptions.

I think polymer might also make use of zones? In which case we may need to re-visit this with the polymer move.