Corrected Signal/Option types.

We were conflating monads with collections of monads. To summarize, a
signal is a function from time to options:

    data S a = T -> Opt e a

We previously had functions like `map` and `bind` associated with
Signals, and Signals themselves would do the plumbing associated with
Options, e.g. breaking on a value of No.

Now, it's necessary to lift pure functions to the Option monad before
mapping across signals, either with Opt.lift or Opt.bind.

Also, we removed the "STi" business, and instead require signals holding
values of type (t -> a) to model static time information.