Introduce SignalSource

After importing Reactive, foldl would be broken for arrays because of
the general type, this also breaks reduce.

Also includes some refactoring to use types in a more Julian way.
Merge pull request #26 from JuliaLang/signal-source

Introduce SignalSource