Refactor constant lookup JIT helpers

There are two helpers for looking up constants in the JIT.
`lookupCnsHelper`, for getting constants without a fallback, and
`lookupCnsUHelper` for constants with a fallback. Each function did their jobs
slightly differently, with `lookupCnsUHelper` actually having a bug in the
fallback case.

This commit refactors the two helpers into a single `lookupCnsCommonHelper`
helper. Which should help keep things in sync.

Fixes #2544
This whole sequence looks pretty inefficient (its possible g++ is smart enough to solve some of it; its also possible that it doesnt). Note that if cns is non-null here, we can skip straight to line 623.

It was suggested to structure this as a while loop:

```
while (true) {
  if (fallback == nullptr) {
    cns = lookupDeferredConstant(tv);
    if (cns) break;
  }
  bool cacheConsts = RDS::s_constants().get() != nullptr;
  if (UNLIKELY(cacheConsts)) {
    cns = RDS::s_constants()->nvGet(name);
    if (cns) break;
  }
  ...
  // handle errors
  // Set the name we use in the error/notice
  StringData* cnsName = fallback ? fallback : name;
  ...
  not_reached();
}
// success
cellDup(*cns, c1);
return c1;
```