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
Some missing commentary here:
- the tests seem to indicate that the fulfill function will be called with one argument...is that the queue size?
- if the queue is cleared, will the promise reject?
- when the fulfill function is invoked, will getLength return the "new" queue size, or the old? (I would assume the old but the tests seem to indicate otherwise)