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
you can swap the ordering here to save a line:
```
if (this.sum < this.min) { return null; }
this.sum = 0;
return this.sum.toString();
```