Split FRP code into traits; add start of Signal semantics