Refactored CSON object into an EventEmitter

Given that all the async methods said “We don’t have an async implementation, so we’re just going to fake it”, I figured I’d rewrite the `CSON` object into an `EventEmitter`.  It’s a familiar pattern for async, so it should make it easier for contributors to whip up something async.  

I did not optimize anything after the rewrite, since I wanted the changes to be as similar as possible to the original.  If this gets accepted, I can clean up a few things, then let others build on that to optimize further.