(Flo) Emit correct literal widths

It appears that when Chisel generates a literal node it simply picks
the smallest bit width that will fit that value and then never updates
it.  This means that if you do something like

  UInt(width = 5) <- Mux(..., UInt(1), UInt(3))

you'll end up with the Flo node

  T0 = mux'5 ... 1'1, 3'2

libflo won't parse this as a valid operation because the widths are
all mis-matched.

This patch is a bit of a mess, but I'm fairly sure it manages to emit
the correct width attached to every constant.  The general idea is
that when a constant is emited another node is passed to emitRef()
that stores the width that should be attached to it.  For most
operations this is just the output node, but for some it's the other
input node (comparison operations end up as a boolean, for example).
This will silently emit bad code if you write something like

  Bool() <- (UInt(1) === UInt(2))

but I've yet to come across any of those.

This code is pretty much un-tested (it works on DES and the
tutorials), but I figure it's at least better than before.
Added flags to parametrize execution of designs on Dreamer.
Merge pull request #171 from ucb-bar/dreamerOptions

(Flo) Added flags to parametrize execution of designs on Dreamer.
Attempt to make name enumeration determinate (reproducible).
Merge branch 'master' of https://github.com/ucb-bar/chisel

Attempt to make name enumeration determinate (reproducible).
Node:nameIt() - Rethrow any caught NullPointerException

If we encounter a NullPointerException trying to generate names, print
the Node at that point, but rethrow the exception so we don't continue
as if nothing had happened.
Attempt to make name enumeration deterministic - part two.

More attempts at making object/method iteration deterministic - these
should be reviewed for correctness/performance impact.
Merge pull request #169 from palmer-dabbelt/flo_width

(Flo) Emit correct literal widths