Make `needs:` require the job it refers to by default

Summary

Currently, needs: is a weak requirement. It means that if needed job is not present, we will ignore it and the job will run anyway.

Most people would expect needs: to be strong requirement, meaning that if a needed job does not exist (due to only/except rules), the job that needs it should also not run.

Today: Example

build-a:
  only: [master]

test-a:
  needs: [build-a]

The test-a will be created when pushed to non-master.

After: Example

The test-a will not be created, as it requires the build-a to function.

Edited by Jason Yavorsky