Knockout should better handle arrays of observables

Some problems I've noticed:

1. `foreach` unwraps the observable before binding so that the inner context can't get notified of changes to the observable. Instead the inner context will get completely re-rendered if the observable changes. This is especially a problem if the observable is an array.
2. `observableArray.remove` treats an observable as a predicate function and totally does the wrong thing. `destroy` has the same problem.