Micro task queue

I believe this will improve the accuracy of tests (in browsers that have native promises)

- [x] use a micro-task queue to register timings, rather then macro task.
- [x] push cleanup to the next/near future macro task (so it doesn't disturb the task with the test)
- [x] some idiomatic promise usage
- [ ] confirm everything works nicely (i would love peer review)
 
runs on `Version 40.0.2197.2 canary (64-bit)`
```
1.7 Render List	20	1308.73ms	1312.55ms	102.26ms
1.8 Render List	20	507.13ms	511.45ms	68.28ms

1.7 Object.create()	50	69.66ms	70.76ms	12.75ms
1.8 Object.create()	50	56.88ms	57.38ms	8.07ms

1.7 Template Bindings	40	15.52ms	16.25ms	6.5ms
1.8 Template Bindings	40	6.64ms	7.4ms	4.73ms

1.7 HTML Bindings	40	8.71ms	8.87ms	1.61ms
1.8 HTML Bindings	40	9.31ms	10.67ms	11.16ms
```