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
Putting aside the notion of handling for a moment, I strongly suggest you use standard queue terms for function names, e.g. "add" or "enqueue" (and likewise for pop/dequeue function(s)).