Refactor Asset & Queue

These commits attempt to fix a few things that I found confusing when I first started reading this code.

1. Format
There was no listing of Format's members, so it was difficult for me to tell what I needed to implement when writing a demuxer. Putting it in a class enables enumeration and documentation of its attributes.

2. Queue
It was very difficult for me to tell what queue was doing from its name. I think BufferedPipe better describes its purpose.

3. Documentation
Since so much of the code is event-driven, it's difficult to understand how data flows through the program. Method comments help (by listing input types) so I added a few JSDoc comments here.