wip add tests for waitlist infinite loop
throw an error on infinite waitlist invalidation loops.

Users are finding themselves in a situation of infinite invalidation
loops. This can happen if you call this.ready() and then subsequently
add functions to the list which change the state in the same computation
tree.

Fix:
When you call wait(...) see whether we already have a dependency on the
current computation or any of its ancestors and if so throw a helpful
error message. For example:

var list = new WaitList;
Deps.autorun(function () {
 list.ready();

 Deps.autorun(function () {
   list.wait(...); // throw error
 });
});

Issue #742

cc @tmeasday, @DerMambo
Merge remote-tracking branch 'origin/devel' into devel