A more robust object literal parser

This is a follow up to #2. I've rewritten the object literal parser so that it's easier to see what's going on, and now supports async much better.