The Doctrine of Frustration in English Contract Law: Controversies and Solutions