New throttle implementation that limits notifications

* Works for any "subscribable" including `observableArray`. (see #1133)

* The `throttle` extender is changed to mean no more than one notification per *timeout* period. Add a `debounce` extender that coalesces multiple continuous notifications into a single one after no notifications happen during a *timeout* period. This is similar to the previous "throttle" algorithm. (see #816)

* Computed observables also delay evaluation until a notification is needed, but will evaluate earlier if accessed.
Use `computed.peek()` to get the last evaluated value (without re-evaluation). (see discussion at #582)

* The extenders define the limiting algorithm and set it for a `subscribable` using the new `limit` method. This can be used to define extenders that set up alternate limiting algorithms.