Added basic UI for Nestable Async Events

This CL adds basic UI support for nestable async events.
Still need to find out whether the UI looks okay. But right
now it looks like the picture in the design doc below.

Design Doc:
https://docs.google.com/document/d/1Z2uqj59UEts5IiXX78mkdU4kd6e7kE3JUKPoDK97bVs/edit?usp=sharing
Ok, let me see if I understand what this is doing:

If either args1 or args2 doesn't have a params array, we just concat, which means we may drop params (due to the way tvcm.concatenateObjects works). (@natduca is this a bug in the concatenateObject method? It seems like, we shouldn't be dropping something if one of the sides is empty?)

Otherwise, if both of them have params, we combine those two params arrays, and then build a new array with the contents of args1, args2 and params.

Why doesn't concatenate object combine the params hashes in this case? So we'd end up with the returned object having {params: {foo:1, bar:2}} instead of {foo:1, bar:2}?