Standardize stream's 'finish' event

Subclass stream.Writable.end so that we can observe when the stream is ending and delay the finish event until the upload is complete
Update unit tests for new 'finish' event behavior
Add test case for writes failing after end() is called
Add test case for 'complete' firing before 'finish'
Add missing param docs
Return parent's end() value

This doesn't do anything useful now, but it seems like a reasonably safe future idea
Add test case for false arg to stream.end()
Simplify handling the almostEnding flag
Merge pull request #13 from Obvious/es-finish-event

Standardize "finish" event behavior