Add Behavior::getValue and allow Behaviors/Signals to be retained

This is definitely violating a taboo. The typical view on behaviors is
that you should never offer a synchronous value getter because it tempts
people to "leave the monad". However, I want to make it easy to mix
reactive and imperative code. This makes it easy to define a behavior
reactively but then allow it to be used non-reactively. I'm going to
use it to allow declared behavior properties to be accessed like normal
properties in telepath, which will definitely make interfaces simpler.