Revert "Simplify circular call protection"

This reverts commit 4ad0ebe6d20165a81384da5edc8ca1e8eb3a3710.

Due to changes in this commit, circular_calls list is reset only when
callback fails, which leads to a spurious 'has already been required'
error on subsequent attempts to compile an asset.