Added computed observables which can depend on other observables.

Modified the example application to something that would better
demonstrate computed observables.

A Computed is backed by a regular Observable object. When the getter is
called it checks whether the value is up to date, and if it's not it calls
the computing function, all the while watching which observables are
accessed. Once the computing function returns the Computed subscribes to
all the observables that were touched, so that if any of them fire it
knows to recalculate the value.

If someone subscribes to a Computed, it just passes it through to the
backing Observable.