JS update

I am sorry for breaking the tests, but the spinner is one tough enemy :)

* figured out the proper spinner detection (lightbox zoomed widget had made spinner_div to appear visible although it was not)
* moved whole spinner detection into JavaScript (faster)
* added "library file" that we can put our JS shortcuts in to not pollute python source.
* slight code cleanup (always use module's `execute_script`)
* fixed widget's footer getter (did not properly react on `Never` state)
Even though it's not new in this PR, I sorta hate the lambda here. It looks like the fail condition would be that _something_in_flight returns True, so we should use the functionality that wait_for gives us rather than creating the anonymous inversion wrapper:
```python
   wait_for(
       _something_in_flight, fail_condition=True,
       num_sec=30, delay=0.1, message="wait for ajax", quiet=True)
```

I do think the old function name reads better in this case, though:
```python
   wait_for(
       _nothing_in_flight,
       num_sec=30, delay=0.1, message="wait for ajax", quiet=True)
```