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
discusses names; agreed there ok. Still pondering better. 

The fulfill function is called with the result of the function being applied. 

Clear will reject the promise that handle gave for each element in the queue.  Clarified in comments.