Refactor `TFSwinLayer` to increase serving compatibility
# What does this PR do?

This PR refactors two parts of `TFSwinLayer` like below, to increase serving compatibility on multiple accelerators.

### Fix incompatible type cast on several serving architecture

On the `window_reverse` function, there is incompatible computation on the graph when restoring batch size:

```python
x = shape_list(windows)[0]
y = tf.cast(height * width / (window_size * window_size), tf.int32)
batch_size = int(x / y) # <- Here
```

This operation can cause tracing failures depending on the accelerator or compiler SDKs. I have confirmed that AWS Neuron SDK (w/ Inferentia) cannot trace this part properly.

We have `batch_size` variable on graph inside `call()`, so I modified this function to use this value by passing it as a function argument.

### Fix mixed use of member & local variables

Several parts are using window size, but some use `window_size`, and some use `self.window_size`. This can cause tracing failure because of unclear separation between compile-time constants and runtime values.

This PR applies to fix this by not using `self.window_size` on everywhere, but only determining the actual window size on `call()`.

## Review

This PR is related with Swin Transformer and TensorFlow.
R: @amyeroberts 
_The documentation is not available anymore as the PR was closed or merged._