Aggregating queues

* Added file: `aggregate.ts` to provide a handler that aggregates things until it decides it is ready. 
  * This generalization is useful for: grouping signaling messages to avoid throttling (will be used to replace most of the current throttling code and move it to our uProxy networking code)
  * Requiring a TCP connection receive to have a minimal number of bytes before starting trying to parsing those bytes (will fix bugs in parsing that, should TCP packet fragmentation occur, will break SOCKS5).
* Fixed a bug in using the individual result handlers (not all promises were correctly resolved due to binding/loop mistake).  
* Added initial event handlers with traditional add/remove/removeAll. This will allow event handlers to be attached to handler-queues. (not currently used)
* Added tests for aggregating an input queue and using/requiring the result promises to complete.
* Fixed bug in Promise typescript definition for all. 
* Updated package number; will publish on merge. 

TESTED: grunt test
So, there's a mixture of "fulfil" and "fulfill" in this file. Apparently (and this was news to me), "fulfill" is used in the US and elsewhere it's "fulfil" -- best to decide on one and stick with it :-)