Rewrite of Simulator to use Theano-like operators.

The goal of this rewrite was to simplify the relationship between signals and
buffers in the simulator, and to simplify the mental model underlying the
simulator. There are no longer different "phases" of the simulator (i.e.
Filters, Transforms, Encoders, Decoders) with their somewhat overlapping
memory access rules, instead there is just a graph of linear operators which
is sorted topologically.
Fix scheduling bug re: updates

Still dealing with some rebase issues as well...
Support sim.signals[foo] = x
Custom deepcopy for Direct and Node

These objects have callable attributes, and callables are often not picklable.
Nested functions are not. The tests use numpy ufuncs, and apparently they
aren't either in numpy 1.6.2.  This commit provides deepcopy implementations
that workaround the situation by passing the functions across *without*
deepcopying them.
Added networkx to requirements