text: Title: destroy the "Expect(err).NotTo(HaveOccurred())" anti-pattern in e2e tests
  Body: I'm getting tired of seeing flake issues like https://github.com/kubernetes/kubernetes/issues/33647 where every single failure is of the form
  
  ```
  Expected error:
      <*errors.errorString | 0xc820412c10>: {
          s: "timed out waiting for the condition",
      }
      timed out waiting for the condition
  not to have occurred
  ```
  
  This is about as unhelpful an error message as you can get.
  
  The problem is that we have
  
  ``` go
  Expect(err).NotTo(HaveOccurred())
  ```
  
  peppered throughout the code everywhere, and in this form, you can only figure out what failed if you read the Ginkgo error, remember which line has the line number you actually want, and then try to read surrounding code in that file.
  
  Possible improvements given in http://onsi.github.io/gomega/#handling-errors:
  - Use `Succeed()`
  - Annotate the assertions
  - Basically, do anything except just Expect(err).NotTo(HaveOccurred())
  
  cc @kubernetes/sig-testing 
  