Fix sub-enqueue bug

When enqueued methods enqueued methods to the same MethodProxy queue,
the sub-enqueued is not executed. This happened because `len` memoizes
`queue.length` which is incremented after the sub-enqueue. We have
changed the queue consumer to run until no items are left in the queue,
rather than for each index of the original length;

This commit also adds a spec that enqueues a method that enqueues
another method to the same queue.

Change-Id: I85158a9938ab3a719810e0918c06148b1db7eeba
Reviewed-on: http://gerrit.causes.com/36746
Reviewed-by: Joe Lencioni <joe.lencioni@causes.com>
Tested-by: Joe Lencioni <joe.lencioni@causes.com>