don't create lists

This is crazy, and makes getting all partitions of a sequence an n^2 operation
notice nesting of `sync_results` decorator

ensures the sync operation only fires once, after the outermost call.

avoids O(n) calls to set.difference
check whether all engines are at HWM in a few places

avoids calling maybe_run on the entire queue when we know that no tasks can be run.
This caused an expensive O(N) operation every time an engine just became not-full,
which is every time a task finishes in the default case of HWM=1.
use heap-sorted queue

avoids having to sort the queue when updating the graph

also renamed `depending` to `queue_map`, to better describe its role.
add debug log when a task is added to the queue
use per-timeout callback, rather than audit for timeouts
use deque instead of heapq
remove accidental debug statement
First go at new input transformation system
More input transformers
Transformers for assignment from %magic and \!system calls
Update inputsplitter to use new input transformers
Fix inputsplitter to pass empty lines to transformers
Move and combine transformer tests
Inputsplitter flushes transformers before retrieving source.
Fix tests in IPython.core
Correction to test framework.
Fix starting the Qt console
More whitespace between top level functions
Add docstrings in IPython.core.inputtransformer